#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
const int INF = 1e9;
const int MOD = 1e9 + 7;
int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }
char s[1000 + 10];
int ba1;
char ba2[4];
string ex[4][10] = {
    {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},
    {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
    {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},
    {"", "M", "MM", "MMM"},
};
void solve() {
  int i = 0, len = strlen(s);
  while (i < len && s[i] == '0') i++;
  if (i == len) {
    puts("0");
    return;
  }
  long long dec = 0;
  while (i < len) {
    int t;
    if (s[i] >= '0' && s[i] <= '9') {
      t = s[i] - '0';
    } else {
      t = 10 + s[i] - 'A';
    }
    dec = dec * ba1 + t;
    i++;
  }
  if (ba2[0] == 'R') {
    string res = "";
    res = ex[3][dec / 1000] + ex[2][(dec % 1000) / 100] +
          ex[1][(dec % 100) / 10] + ex[0][dec % 10];
    cout << res << endl;
  } else {
    int B;
    sscanf(ba2, "%d", &B);
    int l = 0;
    while (dec > 0) {
      int t = dec % B;
      dec /= B;
      if (t < 10) {
        s[l++] = t + '0';
      } else {
        s[l++] = 'A' + t - 10;
      }
    }
    for (i = l - 1; i >= 0; i--) {
      putchar(s[i]);
    }
    puts("");
  }
}
int main() {
  scanf("%d%s%s", &ba1, ba2, s);
  solve();
  return 0;
}
