#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; // using namespace __gnu_cxx; typedef long long ll; typedef double db; typedef vector vi; typedef vector vs; typedef pair pii; #define INF (1<<30) #define PB push_back #define FI first #define SE second #define REP(i,n) for(int (i)=0;(i)<(n);++(i)) #define FUP(i,a,b) for(int (i)=(a);(i)<=(b);++(i)) #define FDN(i,a,b) for(int (i)=(a);(i)>=(b);--(i)) int p[5]; int v[5]; bool bylo[11]; int numb; enum COMM {DUP, SWP, MUL, DIV, SUB, ADD, NUM, END}; void f(COMM x){ if(x == DUP) printf("DUP\n"); else if(x == SWP) printf("SWP\n"); else if(x == MUL) printf("MUL\n"); else if(x == DIV) printf("DIV\n"); else if(x == SUB) printf("SUB\n"); else if(x == ADD) printf("ADD\n"); else if(x == NUM){ if(numb < 0){ printf("NUM %d\n", -numb); printf("INV\n"); } else { printf("NUM %d\n", numb); } } else if(x == END) printf("END\n\n"); } int dziel(int k){ int res = 1; REP(i,5){ if(i == k) continue; res *= (p[i] - p[k]); } return res; } void czyn(int k){ numb = p[k]; f(NUM); f(SUB); } void poly(int k){ int ile = 0; REP(i,5){ if(i==k) continue; ile++; if(ile < 4) f(DUP); czyn(i); if(ile < 4) f(SWP); } f(MUL); f(MUL); f(MUL); numb = dziel(k); f(NUM); f(DIV); numb = v[k]; f(NUM); f(MUL); } void all(){ REP(i,5){ if(i<4) f(DUP); poly(i); if(i<4) f(SWP); } f(ADD); f(ADD); f(ADD); f(ADD); f(END); } int main(){ int n; while(true){ scanf("%d", &n); if(n == 0) break; REP(i,n){ scanf("%d%d", &p[i], &v[i]); bylo[p[i]] = true; } int zost = n; REP(i,11){ if(zost < 5 && !bylo[i]){ p[zost] = i; v[zost] = 0; // domyslnie 0 zost++; } } //REP(i,5) printf("%d %d\n", p[i], v[i]); all(); } return 0; }