#include <bits/stdc++.h>
using namespace std;
void rom(long long W) {
  long long pot = 1LL;
  char val[20] = "IVXLCDM";
  long long w = 0LL, z, i;
  while (pot <= W) {
    pot *= 10LL;
    w++;
  }
  pot /= 10LL;
  w--;
  while (pot) {
    z = W / pot;
    if (z == 4)
      printf("%c%c", val[w * 2], val[w * 2 + 1]);
    else if (z == 9)
      printf("%c%c", val[w * 2], val[w * 2 + 2]);
    else {
      if (z >= 5) {
        printf("%c", val[w * 2 + 1]);
        z -= 5;
      }
      for (i = 0; i < z; i++) printf("%c", val[w * 2]);
    }
    W -= W / pot * pot;
    pot /= 10LL;
    w--;
  }
  printf("\n");
}
void nice(long long W, long long B) {
  if (W == 0LL) cout << 0;
  long long pot = 1LL;
  char val[300];
  int i, j;
  for (i = 0, j = '0'; j <= '9'; i++, j++) val[i] = j;
  for (j = 'A'; j <= 'Z'; i++, j++) val[i] = j;
  while (pot <= W) {
    pot *= B;
  }
  pot /= B;
  while (pot) {
    printf("%c", val[W / pot]);
    W -= (W / pot) * pot;
    pot /= B;
  }
  printf("\n");
}
int main() {
  long long a;
  char b[10000], c[10000];
  long long w, pot, i, j;
  long long val[300];
  memset(val, 0, sizeof(val));
  for (i = '0', j = 0; i <= '9'; i++, j++) {
    val[i] = j;
  }
  for (i = 'A'; i <= 'Z'; i++, j++) {
    val[i] = j;
  }
  cin >> a;
  scanf("%s%s", b, c);
  w = 0LL;
  pot = 1LL;
  for (i = strlen(c) - 1; i >= 0; i--, pot *= a) {
    w += (val[c[i]]) * pot;
  }
  if (b[0] == 'R')
    rom(w);
  else {
    int q;
    sscanf(b, "%d", &q);
    nice(w, 0LL + q);
  }
  return 0;
}
