// ************************************************************************** //
//                                                                            //
//    eses                   eses                                             //
//   eses                     eses                                            //
//  eses    eseses  esesese    eses   Embedded Systems Group                  //
//  ese    ese  ese ese         ese                                           //
//  ese    eseseses eseseses    ese   Department of Computer Science          //
//  eses   eses          ese   eses                                           //
//   eses   eseses  eseseses  eses    University of Kaiserslautern            //
//    eses                   eses                                             //
//                                                                            //
// ************************************************************************** //


[65]int p;
int x,y;
thread EvalPolynomial {
    int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32,t33,t34,t35,t36,t37,t38,t39,t40,t41,t42,t43,t44,t45,t46,t47,t48,t49,t50,t51,t52,t53,t54,t55,t56,t57,t58,t59,t60,t61,t62,t63,t64;
    t0 = +1;
    t1 = x;
    t2 = x;
    t3 = x;
    t4 = x;
    t5 = x;
    t6 = x;
    t7 = x;
    t8 = x;
    t9 = x;
    t10 = x;
    t11 = x;
    t12 = x;
    t13 = x;
    t14 = x;
    t15 = x;
    t16 = x;
    t17 = x;
    t18 = x;
    t19 = x;
    t20 = x;
    t21 = x;
    t22 = x;
    t23 = x;
    t24 = x;
    t25 = x;
    t26 = x;
    t27 = x;
    t28 = x;
    t29 = x;
    t30 = x;
    t31 = x;
    t32 = x;
    t33 = x;
    t34 = x;
    t35 = x;
    t36 = x;
    t37 = x;
    t38 = x;
    t39 = x;
    t40 = x;
    t41 = x;
    t42 = x;
    t43 = x;
    t44 = x;
    t45 = x;
    t46 = x;
    t47 = x;
    t48 = x;
    t49 = x;
    t50 = x;
    t51 = x;
    t52 = x;
    t53 = x;
    t54 = x;
    t55 = x;
    t56 = x;
    t57 = x;
    t58 = x;
    t59 = x;
    t60 = x;
    t61 = x;
    t62 = x;
    t63 = x;
    t64 = x;
    // up-level 0
    t1 = t0 * t1;
    t3 = t2 * t3;
    t5 = t4 * t5;
    t7 = t6 * t7;
    t9 = t8 * t9;
    t11 = t10 * t11;
    t13 = t12 * t13;
    t15 = t14 * t15;
    t17 = t16 * t17;
    t19 = t18 * t19;
    t21 = t20 * t21;
    t23 = t22 * t23;
    t25 = t24 * t25;
    t27 = t26 * t27;
    t29 = t28 * t29;
    t31 = t30 * t31;
    t33 = t32 * t33;
    t35 = t34 * t35;
    t37 = t36 * t37;
    t39 = t38 * t39;
    t41 = t40 * t41;
    t43 = t42 * t43;
    t45 = t44 * t45;
    t47 = t46 * t47;
    t49 = t48 * t49;
    t51 = t50 * t51;
    t53 = t52 * t53;
    t55 = t54 * t55;
    t57 = t56 * t57;
    t59 = t58 * t59;
    t61 = t60 * t61;
    t63 = t62 * t63;
    // up-level 1
    t3 = t1 * t3;
    t7 = t5 * t7;
    t11 = t9 * t11;
    t15 = t13 * t15;
    t19 = t17 * t19;
    t23 = t21 * t23;
    t27 = t25 * t27;
    t31 = t29 * t31;
    t35 = t33 * t35;
    t39 = t37 * t39;
    t43 = t41 * t43;
    t47 = t45 * t47;
    t51 = t49 * t51;
    t55 = t53 * t55;
    t59 = t57 * t59;
    t63 = t61 * t63;
    // up-level 2
    t7 = t3 * t7;
    t15 = t11 * t15;
    t23 = t19 * t23;
    t31 = t27 * t31;
    t39 = t35 * t39;
    t47 = t43 * t47;
    t55 = t51 * t55;
    t63 = t59 * t63;
    // up-level 3
    t15 = t7 * t15;
    t31 = t23 * t31;
    t47 = t39 * t47;
    t63 = t55 * t63;
    // up-level 4
    t31 = t15 * t31;
    t63 = t47 * t63;
    // up-level 5
    t63 = t31 * t63;
    // up-level 6
    // down-level 7
    // down-level 8
    t47 = t31 * t47;
    // down-level 9
    t23 = t15 * t23;
    t39 = t31 * t39;
    t55 = t47 * t55;
    // down-level 10
    t11 = t7 * t11;
    t19 = t15 * t19;
    t27 = t23 * t27;
    t35 = t31 * t35;
    t43 = t39 * t43;
    t51 = t47 * t51;
    t59 = t55 * t59;
    // down-level 11
    t5 = t3 * t5;
    t9 = t7 * t9;
    t13 = t11 * t13;
    t17 = t15 * t17;
    t21 = t19 * t21;
    t25 = t23 * t25;
    t29 = t27 * t29;
    t33 = t31 * t33;
    t37 = t35 * t37;
    t41 = t39 * t41;
    t45 = t43 * t45;
    t49 = t47 * t49;
    t53 = t51 * t53;
    t57 = t55 * t57;
    t61 = t59 * t61;
    // down-level 12
    t2 = t1 * t2;
    t4 = t3 * t4;
    t6 = t5 * t6;
    t8 = t7 * t8;
    t10 = t9 * t10;
    t12 = t11 * t12;
    t14 = t13 * t14;
    t16 = t15 * t16;
    t18 = t17 * t18;
    t20 = t19 * t20;
    t22 = t21 * t22;
    t24 = t23 * t24;
    t26 = t25 * t26;
    t28 = t27 * t28;
    t30 = t29 * t30;
    t32 = t31 * t32;
    t34 = t33 * t34;
    t36 = t35 * t36;
    t38 = t37 * t38;
    t40 = t39 * t40;
    t42 = t41 * t42;
    t44 = t43 * t44;
    t46 = t45 * t46;
    t48 = t47 * t48;
    t50 = t49 * t50;
    t52 = t51 * t52;
    t54 = t53 * t54;
    t56 = t55 * t56;
    t58 = t57 * t58;
    t60 = t59 * t60;
    t62 = t61 * t62;
    t64 = t63 * t64;
    // multiply p[i] with x^i
    t0 = p[0] * t0;
    t1 = p[1] * t1;
    t2 = p[2] * t2;
    t3 = p[3] * t3;
    t4 = p[4] * t4;
    t5 = p[5] * t5;
    t6 = p[6] * t6;
    t7 = p[7] * t7;
    t8 = p[8] * t8;
    t9 = p[9] * t9;
    t10 = p[10] * t10;
    t11 = p[11] * t11;
    t12 = p[12] * t12;
    t13 = p[13] * t13;
    t14 = p[14] * t14;
    t15 = p[15] * t15;
    t16 = p[16] * t16;
    t17 = p[17] * t17;
    t18 = p[18] * t18;
    t19 = p[19] * t19;
    t20 = p[20] * t20;
    t21 = p[21] * t21;
    t22 = p[22] * t22;
    t23 = p[23] * t23;
    t24 = p[24] * t24;
    t25 = p[25] * t25;
    t26 = p[26] * t26;
    t27 = p[27] * t27;
    t28 = p[28] * t28;
    t29 = p[29] * t29;
    t30 = p[30] * t30;
    t31 = p[31] * t31;
    t32 = p[32] * t32;
    t33 = p[33] * t33;
    t34 = p[34] * t34;
    t35 = p[35] * t35;
    t36 = p[36] * t36;
    t37 = p[37] * t37;
    t38 = p[38] * t38;
    t39 = p[39] * t39;
    t40 = p[40] * t40;
    t41 = p[41] * t41;
    t42 = p[42] * t42;
    t43 = p[43] * t43;
    t44 = p[44] * t44;
    t45 = p[45] * t45;
    t46 = p[46] * t46;
    t47 = p[47] * t47;
    t48 = p[48] * t48;
    t49 = p[49] * t49;
    t50 = p[50] * t50;
    t51 = p[51] * t51;
    t52 = p[52] * t52;
    t53 = p[53] * t53;
    t54 = p[54] * t54;
    t55 = p[55] * t55;
    t56 = p[56] * t56;
    t57 = p[57] * t57;
    t58 = p[58] * t58;
    t59 = p[59] * t59;
    t60 = p[60] * t60;
    t61 = p[61] * t61;
    t62 = p[62] * t62;
    t63 = p[63] * t63;
    t64 = p[64] * t64;
    // sum up p[i]*x^i by a binary tree
    // level 0
    t0 = t0 + t1;
    t1 = t2 + t3;
    t2 = t4 + t5;
    t3 = t6 + t7;
    t4 = t8 + t9;
    t5 = t10 + t11;
    t6 = t12 + t13;
    t7 = t14 + t15;
    t8 = t16 + t17;
    t9 = t18 + t19;
    t10 = t20 + t21;
    t11 = t22 + t23;
    t12 = t24 + t25;
    t13 = t26 + t27;
    t14 = t28 + t29;
    t15 = t30 + t31;
    t16 = t32 + t33;
    t17 = t34 + t35;
    t18 = t36 + t37;
    t19 = t38 + t39;
    t20 = t40 + t41;
    t21 = t42 + t43;
    t22 = t44 + t45;
    t23 = t46 + t47;
    t24 = t48 + t49;
    t25 = t50 + t51;
    t26 = t52 + t53;
    t27 = t54 + t55;
    t28 = t56 + t57;
    t29 = t58 + t59;
    t30 = t60 + t61;
    t31 = t62 + t63;
    t32 = t64;
    // level 0
    t0 = t0 + t1;
    t1 = t2 + t3;
    t2 = t4 + t5;
    t3 = t6 + t7;
    t4 = t8 + t9;
    t5 = t10 + t11;
    t6 = t12 + t13;
    t7 = t14 + t15;
    t8 = t16 + t17;
    t9 = t18 + t19;
    t10 = t20 + t21;
    t11 = t22 + t23;
    t12 = t24 + t25;
    t13 = t26 + t27;
    t14 = t28 + t29;
    t15 = t30 + t31;
    t16 = t32;
    // level 0
    t0 = t0 + t1;
    t1 = t2 + t3;
    t2 = t4 + t5;
    t3 = t6 + t7;
    t4 = t8 + t9;
    t5 = t10 + t11;
    t6 = t12 + t13;
    t7 = t14 + t15;
    t8 = t16;
    // level 0
    t0 = t0 + t1;
    t1 = t2 + t3;
    t2 = t4 + t5;
    t3 = t6 + t7;
    t4 = t8;
    // level 0
    t0 = t0 + t1;
    t1 = t2 + t3;
    t2 = t4;
    // level 0
    t0 = t0 + t1;
    t1 = t2;
    // level 0
    t0 = t0 + t1;
    // final result
    y = t0;
    }