#include <bits/stdc++.h>
using namespace std;
vector <int> v;
#define soort(v) sort(v.begin(),v.end())
#define foor(i,n) for(int i=0; i<n; i++)
//#define vecprint(v){for(int i=0; i<v.size(); i++)cout << v[i] << " ";}
int string_to_int(string s){stringstream x(s);double a=0; x>>a; return a;}
long long int gcd(long long int a, long long int b){if(a%b==0)return b;return gcd(b, a%b);}
long long int lcm(long long int a, long long int b){return (a*b)/gcd(a, b);}
//int string_sum(string s){int b = 0;auto k =s.size();for(int j=0; j<k; j++){b +=(s[j]-48);}return b;}
//long long int factorial(long long int n){if (n == 0)return 1;return n * factorial(n - 1);}
 
//int cnt =0;
 
//void SieveOfEratosthenes(int n=20000000)
//{
//   // v.push_back(1);
//
//   bool prime[n+1];
//   memset(prime, true, sizeof(prime));
//
//    vector <bool>prime(n+1,true);
//
//    for (int p=2; p*p<=n; p++)
//    {
//
//        if (prime[p] == true)
//        {
//
//            for (int i=p*p; i<=n; i += p)
//                prime[i] = false;
//        }
//    }
//
//
//    for (int p=2; p<=n; p++)
//       if (prime[p])
//          mp[p]++;
//}
 
 
 
//int mod(string num, int a)
//{
//    // Initialize result
//    int res = 0;
//
//    // One by one process all digits of 'num'
//    for (int i = 0; i < num.length(); i++)
//         res = (res*10 + (int)num[i] - '0') %a;
//
//    return res;
//}
 
//vector <int> arr(100,-1);
//
//int fib(int n)
//{
//    if(n<=1)return 1;
//
//    if(arr[n]==-1)
//    {
//        arr[n] = fib(n-1)+fib(n-2);
//    }
//    //else return arr[n];
//
//   return arr[n];
//}
 
 
//int arr[1050][1050];
//
//int mx=0;
//int LCS(string s, string p)
//{
//    for(int i=1; i<=s.size(); i++)
//    {
//        for(int j=1; j<=p.size(); j++)
//        {
//
//            if(s[i-1]==p[j-1])
//                arr[i][j]=1+arr[i-1][j-1];
//            else
//                arr[i][j]=max(arr[i-1][j],arr[i][j-1]);
//
//        }
//    }
//    return arr[s.size()][p.size()];
//}
 
//set <int>s;
//void primeFactors(long double n)
//{
//
//    while(fmod(n, 2)==0)
//    {
//        s.insert(2);
//        n /= 2;
//    }
//
//
//    for(int i=3; i<=sqrt(n); i+=2)
//    {
//
//        while(fmod(n, i)==0)
//        {
//            s.insert(i);
//            n /= i;
//        }
//
//    }
//
//    if(n>2){
//       s.insert(n);
//    }
//
//}
 
 
//bool fun(int n,int i){
//    bool flag, flag2;
//
//    if(n==0)return true;
//    if(i==v.size())return false;
//
//    if(n>=v[i]){
//        flag = fun(n-v[i], i);
//        if(flag == true)return true;
//        else return fun(n, ++i);
//    }
//    else{
//         flag2 = fun(n, ++i);
//        return flag2;
//    }
//    return false;
//}
//int i=0;
//int lcs(string s,string p,int i,int j){
//    cout << ++i << endl;
//
//    if(i==s.size() || j==p.size())return 0;
//
//    if(s[i]==p[j])
//        return 1+lcs(s, p, i+1, j+1);
//    else{
//        return max(lcs(s, p, i+1, j),lcs(s, p, i, j+1));
//    }
//
//}
 
//bool cmp(pair<int,int>a,pair<int,int>b){
//    if(a.first>b.first)return false;
//    else if(a.first<b.first)return true;
//    else{
//        if(
//    }
//}

int isprime(long long int N){
    if(N<2 || (!(N&1) && N!=2))
        return 0;
    for(long long int i=3; i*i<=N; i+=2){
        if(!(N%i))
            return 0;
    }
    return 1;
}

 
 
int main(){
  
    long long int a,b,c,d,n,e=10000000000000;
    vector<pair<int,int>>vp;
    bool flag = false;
   
    cin >> a;
    
    if(isprime(a))cout << a << endl;
    else{
        for(long long int i=a; i<=e; i++){
            if(isprime(i)){
                cout << i << endl;
                break;
            }
        }
    }
    
    
    return 0;
}


Measured memory_bytes: 256