#include <bits/stdc++.h>
using namespace std;
bitset<100000001> memo;
bitset<100000001> vis;
bool isPrime(int x) {
  if (vis[x]) {
    return memo[x];
  }
  vis[x] = true;
  if (!(x % 2)) return memo[x] = false;
  for (int i = 3; i * i <= x; i += 2)
    if (!(x % i)) return memo[x] = false;
  return memo[x] = true;
}
int reverseInt(int x) {
  int rv = 0;
  while (x > 0) {
    rv *= 10;
    rv += x % 10;
    x /= 10;
  }
  return rv;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  memo.reset();
  vis.reset();
  int n;
  cin >> n;
  for (int i = 2; n; i++) {
    if (isPrime(6 * i - 1)) {
      if (reverseInt(6 * i - 1) != 6 * i - 1 &&
          isPrime(reverseInt(6 * i - 1))) {
        n--;
        if (!n) {
          cout << 6 * i - 1 << endl;
          return 0;
        }
      }
    }
    if (isPrime(6 * i + 1)) {
      if (reverseInt(6 * i + 1) != 6 * i + 1 &&
          isPrime(reverseInt(6 * i + 1))) {
        n--;
        if (!n) {
          cout << 6 * i + 1 << endl;
          return 0;
        }
      }
    }
  }
}
