#include <iostream>
#include <bitset>
const int64_t MAX_SIZE(10000000);
typedef std::bitset<MAX_SIZE> bit_arr;
class PrimeNumberGenerator {
 private:
  int64_t number_start;
  int64_t flag = 0;

 public:
  explicit PrimeNumberGenerator(int start) {
    this->number_start = start;
  }

  int GetNextPrime() {
    int64_t start = this->number_start;
    int64_t tmp_flag = 0;
    int64_t finish = MAX_SIZE/400;
    bit_arr arr;
    for (int i{3}; i <= finish; ++i) {
      if (!arr.test(i)) {
        if (i >= start) {
          if (tmp_flag == this->flag) {
            this->flag++;
            return i;
          } else {
            tmp_flag++;
          }
        }
        for (int j = i * 2; j <= finish; j += i) {
          arr.set(j);
        }
      }
    }
    return 0;
  }
};