#include <bits/stdc++.h>
using namespace std;
int ri() {
  int r;
  cin >> r;
  return r;
}
unsigned int rui() {
  unsigned int r;
  cin >> r;
  return r;
}
long long rl() {
  long long r;
  cin >> r;
  return r;
}
unsigned long long rul() {
  unsigned long long r;
  cin >> r;
  return r;
}
double rd() {
  double r;
  cin >> r;
  return r;
}
string rss() {
  string r;
  cin >> r;
  return r;
}
string rs() {
  string r;
  getline(cin, r);
  return r;
}
vector<string> rvs(int n) {
  assert(n);
  vector<string> r;
  for (int i = 0; i < n; ++i) {
    string s = rs();
    while (s.empty()) s = rs();
    r.push_back(s);
  }
  return r;
}
vector<int> rvi(int n) {
  assert(n);
  vector<int> r;
  for (int i = 0; i < n; ++i) r.push_back(ri());
  return r;
}
vector<unsigned int> rvui(int n) {
  assert(n);
  vector<unsigned int> r;
  for (int i = 0; i < n; ++i) r.push_back(rui());
  return r;
}
vector<long long> rvl(int n) {
  assert(n);
  vector<long long> r;
  for (int i = 0; i < n; ++i) r.push_back(rl());
  return r;
}
vector<unsigned long long> rvul(int n) {
  assert(n);
  vector<unsigned long long> r;
  for (int i = 0; i < n; ++i) r.push_back(rul());
  return r;
}
vector<double> rvd(int n) {
  assert(n);
  vector<double> r;
  for (int i = 0; i < n; ++i) r.push_back(rd());
  return r;
}
unsigned long long to_dec(string s, int base) {
  unsigned long long r = 0;
  while (!s.empty()) {
    r = r * base;
    if (s[0] >= '0' && s[0] <= '9')
      r += s[0] - '0';
    else
      r += s[0] - 'A' + 10;
    s.erase(0, 1);
  }
  return r;
}
string from_dec(unsigned long long n, int base) {
  string r;
  while (n) {
    auto c = n % base;
    if (c < 10)
      r += ('0' + c);
    else
      r += ('A' + (c - 10));
    n /= base;
  }
  reverse((r).begin(), (r).end());
  return r;
}
string to_rim(unsigned long long n) {
  string r;
  while (n >= 1000) {
    r += "M";
    n -= 1000;
  }
  if (n >= 900) {
    r += "CM";
    n -= 900;
  }
  if (n >= 500) {
    r += "D";
    n -= 500;
  }
  if (n >= 400) {
    r += "CD";
    n -= 400;
  }
  while (n >= 100) {
    r += "C";
    n -= 100;
  }
  if (n >= 90) {
    r += "XC";
    n -= 90;
  }
  if (n >= 50) {
    r += "L";
    n -= 50;
  }
  if (n >= 40) {
    r += "XL";
    n -= 40;
  }
  while (n >= 10) {
    r += "X";
    n -= 10;
  }
  if (n >= 9) {
    r += "IX";
    n -= 9;
  }
  if (n >= 5) {
    r += "V";
    n -= 5;
  }
  if (n >= 4) {
    r += "IV";
    n -= 4;
  }
  while (n >= 1) {
    r += "I";
    n -= 1;
  }
  return r;
}
int main() {
  int a = ri();
  auto b = rss();
  auto c = rss();
  auto v = to_dec(c, a);
  string r;
  if (b.size() == 1 && b[0] == 'R') {
    r = to_rim(v);
  } else {
    r = from_dec(v, stoi(b));
  }
  if (r.empty()) r = "0";
  cout << r << endl;
  return 0;
}
