/*
Autorius: Vytis Banaitis
Klausiame, ar slaptasis skaičius dalinasi iš kiekvieno pirminio skaičiaus, pradedant
mažiausiais. Gavus teigiamą atsakymą, klausiame, ar skaičius dalinasi iš paeiliui
kiekvieno to pirminio skaičiaus laipsnio. Klausinėjimus tęsiame, tol kol teigiamas
atsakymas reikštų, kad slaptasis skaičius viršija n.
*/
#include <cstdlib>
#include "alice.h"

using namespace std;

#define PRIME 78498

int primes[PRIME];

void genprimes()
{
     bool isprime[1000001];
     for (int i=2;i<1000001;i++) isprime[i] = 1;
     isprime[0] = isprime[1] = 0;
     int c = 0;
     for (int i=0;i<1000001;i++) if (isprime[i]) {
         primes[c++] = i;
         for (int j=2*i;j<1000001;j += i) isprime[j] = 0;
         }
}

int main()
{
    genprimes();
    int n = get_n();
    int sure = 1;
    int p = 0,i;
    while (p < PRIME && primes[p] <= n/sure) {
          i = 1;
          while (1) {
                if (primes[p] > n/sure) break;
                i *= primes[p];
                if (is_divisible_by(i)) sure *= primes[p];
                else break;
                }
          p++;
          }
    guess(sure);
    return 0;
}
