#include <bits/stdc++.h>
using namespace std;
string a, b, s, t;
long long cnta, c = 0, cntb;
void solve() {
  cin >> a >> b >> s;
  if (isalpha(a[0])) {
    cnta = 10 + a[0] - 'A';
  } else {
    cnta = atoi(a.c_str());
  }
  for (long long i = 0; i < s.size(); ++i) {
    c *= cnta;
    c += (isalpha(s[i]) ? s[i] - 'A' + 10 : s[i] - '0');
  }
  if (b == "R") {
    t = string(c / 1000, 'M');
    if (c % 1000 >= 900) {
      t += "CM";
    } else if (c % 1000 >= 400 && c % 1000 < 500) {
      t += "CD";
    }
    if (c % 1000 >= 500 && c % 1000 < 900) {
      t += "D";
    }
    if (c % 500 >= 300 && c % 500 < 400) {
      t += "CCC";
    } else if (c % 500 >= 200 && c % 500 < 300) {
      t += "CC";
    } else if (c % 500 >= 100 && c % 500 < 200) {
      t += "C";
    }
    if (c % 100 >= 90) {
      t += "XC";
    } else if (c % 100 >= 40 && c % 100 < 50) {
      t += "XL";
    }
    if (c % 100 >= 50 && c % 100 < 90) {
      t += "L";
    }
    if (c % 50 >= 30 && c % 50 < 40) {
      t += "XXX";
    } else if (c % 50 >= 20 && c % 50 < 30) {
      t += "XX";
    } else if (c % 50 >= 10 && c % 50 < 20) {
      t += "X";
    }
    if (c % 10 == 9) {
      t += "IX";
    } else if (c % 10 >= 4 && c % 10 < 5) {
      t += "IV";
    }
    if (c % 10 >= 5 && c % 10 < 9) {
      t += "V";
    }
    if (c % 5 >= 3 && c % 5 < 4) {
      t += "III";
    } else if (c % 5 >= 2 && c % 5 < 3) {
      t += "II";
    } else if (c % 5 >= 1 && c % 5 < 2) {
      t += "I";
    }
  } else {
    if (isalpha(b[0])) {
      cntb = 10 + b[0] - 'A';
    } else {
      cntb = atoi(b.c_str());
    }
    while (c != 0) {
      t += (c % cntb >= 10 ? 'A' + c % cntb - 10 : '0' + (c % cntb));
      c /= cntb;
    }
    reverse(t.begin(), t.end());
  }
  if (t.empty()) {
    cout << 0 << endl;
    return;
  }
  cout << t << endl;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve();
  return 0;
}
