import java.util.*; public class expr { static StringBuffer b = new StringBuffer(); public static int rton(StringBuffer r, int from, int to) { int length = to -from; int out = 0; for(int i = length -1; i >= 0; i--) { char c = r.charAt(from +i); char d = r.charAt(from +i -1); if(c == 'O') { continue; } if(c == 'I') { out++; continue; } if(c == 'V') { if(i > 0 && d == 'I') { out = out +4; i--; continue; } else { out = out +5; continue; } } if(c == 'X') { if(i > 0 && d == 'I') { out = out +9; i--; continue; } else { out = out +10; continue; } } if(c == 'L') { if(i > 0 && d == 'X') { out = out +40; i--; continue; } else { out = out +50; continue; } } if(c == 'C') { if(i > 0 && d == 'X') { out = out +90; i--; continue; } else { out = out +100; continue; } } if(c == 'D') { if(i > 0 && d == 'C') { out = out +400; i--; continue; } else { out = out +500; continue; } } if(c == 'M') { if(i > 0 && d == 'C') { out = out +900; i--; continue; } else { out = out +1000; continue; } } } return out; } static String ntor(int n) { if(n == 0) { return "O"; } StringBuffer b = new StringBuffer(); int r, k; k = n; r = k / 1000; for(int i = 0; i < r; i++) { b.append('M'); } k = k - (r*1000); r = k / 100; if(r == 9) { b.append("CM"); } else if(r > 4) { if(r == 8) { b.append("DCCC"); } else if(r == 7) { b.append("DCC"); } else if(r == 6) { b.append("DC"); } else if(r == 5) { b.append('D'); } } else if(r == 4) { b.append("CD"); } else if(r == 3) { b.append("CCC"); } else if(r == 2) { b.append("CC"); } else if(r == 1) { b.append('C'); } k = k - (r*100); r = k / 10; if(r == 9) { b.append("XC"); } else if(r > 4) { if(r == 8) { b.append("LXXX"); } else if(r == 7) { b.append("LXX"); } else if(r == 6) { b.append("LX"); } else if(r == 5) { b.append('L'); } } else if(r == 4) { b.append("XL"); } else if(r == 3) { b.append("XXX"); } else if(r == 2) { b.append("XX"); } else if(r == 1) { b.append('X'); } k = k - (r*10); r = k; if(r == 9) { b.append("IX"); } else if(r > 4) { if(r == 8) { b.append("VIII"); } else if(r == 7) { b.append("VII"); } else if(r == 6) { b.append("VI"); } else if(r == 5) { b.append('V'); } } else if(r == 4) { b.append("IV"); } else if(r == 3) { b.append("III"); } else if(r == 2) { b.append("II"); } else if(r == 1) { b.append('I'); } return b.toString(); } static int UNINICIALIZED = -1; static void print(String s){ System.out.println(s); } public static void main(String[] args) { Scanner s = new Scanner(System.in); int[] registers = new int[11]; for(int i = 0; i< 11; i++) registers[i] = UNINICIALIZED; here: while(true){ StringBuffer line = new StringBuffer(s.nextLine()); if(line.toString().startsWith("QUIT")){ print("Bye"); break; } if(line.toString().startsWith("RESET")){ for(int i = 0; i< 11; i++) registers[i] = UNINICIALIZED; print("Ready"); continue; } int r = -1; int last = 0; int sum = 0; for(int i=0; i < line.length(); i++){ char c = line.charAt(i); if(c == '='){ r = Integer.parseInt(line.substring(0,i)); last = i; continue; } if(c == '+' || c == '-' || i == line.length()-1){ int n = 0; if(i == line.length() -1) i++; try{ int r2 = Integer.parseInt(line.substring(last+1, i)); n = registers[r2]; if(n == UNINICIALIZED){ print("Error"); continue here; } }catch( NumberFormatException e){ n = rton(line, last+1, i); //print("!"); } if(line.charAt(last) == '=' || line.charAt(last) == '+'){ //print("+"+n); sum += n; } else if(line.charAt(last) == '-'){ sum -= n; //print("-"+n); } last = i; } } if(sum > 10000 || sum < 0){ print("Error"); continue; } registers[r] = sum; print(""+r+"="+ntor(sum)); } } }