class PrimeNumberGenerator {
 private:
    int start;
 public:
    explicit PrimeNumberGenerator(int start);
    int GetNextPrime();
};

PrimeNumberGenerator::PrimeNumberGenerator(int start) : start(start) {
}
bool isPrime(int n) {
    if (n == 2)
        return true;
    if (n < 2 || n % 2 == 0)
        return false;
    for (int i = 3; i * i <= n; i += 2)
        if (n % i == 0)
            return false;
    return true;
}
int next(int N) {
    for (int i = N + 1; ; i++)
        if (isPrime(i))
            return i;
}

int PrimeNumberGenerator::GetNextPrime() {
    int tmp;
    if (isPrime(start)) {
        tmp = start;
        start = next(start);
        return tmp;
    }
    start = next(start);
    return start++;
}