569_C. Primes or Palindromes?_9691
Rikhail Mubinchik believes that the current definition of prime numbers is obsolete as they are too complex and unpredictable. A palindromic number is another matter. It is aesthetically pleasing, and it has a number of remarkable properties. Help Rikhail to convince the scientific community in this!

Let us remind you that a number is called prime if it is integer larger than one, and is not divisible by any positive integer other than itself and one.

Rikhail calls a number a palindromic if it is integer, positive, and its decimal representation without leading zeros is a palindrome, i.e. reads the same from left to right and right to left.

One problem with prime numbers is that there are too many of them. Let's introduce the following notation: π(n) — the number of primes no larger than n, rub(n) — the number of palindromic numbers no larger than n. Rikhail wants to prove that there are a lot more primes than palindromic ones.

He asked you to solve the following problem: for a given value of the coefficient A find the maximum n, such that π(n) ≤ A·rub(n).

Input

The input consists of two positive integers p, q, the numerator and denominator of the fraction that is the value of A (<image>, <image>).

Output

If such maximum number exists, then print it. Otherwise, print "Palindromic tree is better than splay tree" (without the quotes).

Examples

Input

1 1


Output

40


Input

1 42


Output

1


Input

6 4


Output

172
#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const double PI = acos(-1.0);
const double E = exp(1.0);
const int M = 2e6 + 5;
int prime[M];
int huiwen[M];
int sum[M];
void getprime() {
  for (int i = 2; i < M; ++i) {
    sum[i] = sum[i - 1];
    if (!prime[i]) {
      prime[++prime[0]] = i;
      sum[i]++;
    }
    for (int j = 1; j <= prime[0] && prime[j] * i < M; ++j) {
      prime[prime[j] * i] = 1;
      if (i % prime[j] == 0) break;
    }
  }
}
bool judge(int x) {
  int p[11];
  int len = 0;
  while (x) {
    p[len++] = x % 10;
    x /= 10;
  }
  for (int i = 0; i <= len / 2; ++i)
    if (p[i] != p[len - i - 1]) return 0;
  return 1;
}
void gethuiwen() {
  int cnt = 1;
  for (int i = 1; i < M; ++i) {
    huiwen[i] = huiwen[i - 1];
    if (judge(i)) huiwen[i]++;
  }
}
int main() {
  gethuiwen();
  getprime();
  int p, q;
  cin >> p >> q;
  for (int i = M - 2; i >= 0; --i) {
    if (q * sum[i] <= p * huiwen[i]) {
      cout << i << endl;
      return 0;
    }
  }
  return 0;
}

6 4
 1 1
 1 42
 238 9996
 9999 9999
 620 35
 9999 9998
 6811 5416
 10000 9999
 42 1
 10000 10000
 241 10000
 5858 674
 1000 10000
 1307 3420
 4 9
 10000 239
 5 8
 16 60
 999 10000
 7 11
 940 480
 214 210
 3 1
 7 267
 239 10000
 106 6
 238 9655
 9999 6698
 987 35
 9854 9998
 11275 5416
 10000 1538
 5858 495
 1854 3420
 7 9
 5 5
 29 60
 12 11
 955 480
 214 248
 3 2
 106 10
 9999 5278
 987 39
 11275 615
 10100 1538
 5858 304
 7 10
 5 2
 1738 480
 145 10
 6343 5278
 11275 351
 11000 1538
 8689 304
 35 4
 48 10000
 999 11000
 7 388
 239 11000
 1 2
 1 45
 238 5291
 10351 9998
 48 10010
 1854 4320
 35 60
 1526 11000
 12 16
 80 248
 8 388
 379 11000
 2 45
 238 2119
 10351 10081
 9 10010
 3498 4320
 9 10
 1 3
 2413 11000
 12 29

172
 40
 1
 1
 40
 251262
 40
 66
 40
 1179858
 40
 1
 71118
 1
 1
 10
 1168638
 16
 1
 1
 16
 1372
 40
 2530
 1
 1
 250300
 1 162 514872 36 1486 11620 146358 12 22 40 10 46 1408 28 172 127296 1296 429508 263862 11940 283026 18 1912 3448 190908 66 652836 15580 526776 100332 1 1 1 1 12 1 1 40 1 1 12 1 22 1 1 1 1 1 40 1 22 28 1 1 1