#include #include #include #include #include #include #include #include #include #include using namespace std; #define FI first #define SE second #define X first #define Y second #define ST first #define ND second #define MP make_pair #define PB push_back typedef vector VI; typedef pair PII; typedef long long LL; typedef long double LD; typedef double D; #define REP(i,n) for(int i=0;i<(n);i++) #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define FORD(i,a,b) for(int i=(a);i>=(b);i--) #define FORE(a,b) for(VAR(a,(b).begin());a!=(b).end();a++) #define VAR(a,b) __typeof(b) a=(b) #define SIZE(a) ((int)(a).size()) #define ALL(x) (x).begin(),(x).end() #define CLR(x,a) memset(x,a,sizeof(x)) const int p = 23; int v[13], r[13]; void wypisz(int a, int b, int c, int d, int e) { int t[] = {a,b,c,d,e}; REP(i,3) puts("DUP"); printf("NUM %d\n",t[0]); puts("MUL"); FOR(i,1,4) { printf("NUM %d\n",t[i]); puts("ADD"); if (i != 4) puts("MUL"); } puts("NUM 23"); puts("MOD"); puts("END"); puts(""); } int main() { int n; while(scanf("%d",&n)==1 && n) { REP(i, n) { scanf("%d %d",&v[i], &r[i]); } REP(a, p) REP(b, p) REP(c, p) REP(d, p) { int f = (((a * v[0] + b) * v[0] + c) * v[0] + d) * v[0] % p; int e = (23 + r[0] - f) % p; int ok = 1; REP(i, 5) if(((((a * v[i] + b) * v[i] + c) * v[i] + d) * v[i] + e) % p != r[i]) ok = 0; if(ok) { wypisz(a,b,c,d,e); a=b=c=d=p; } } } return 0; }