bool isPrime(int n) {
    for (int i = 2; i <= n / 2; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

class PrimeNumberGenerator {
 public:
    explicit PrimeNumberGenerator(int start) : current_number(start) {}
    int GetNextPrime() {
        if (current_number <= 1 && !is_changed) {
            current_number++;
            is_changed = true;
            return 2;
        }

        if (isPrime(current_number) && !is_changed) {
            is_changed = true;
            return current_number;
        }

        int current_prime = current_number;
        bool prime_is_founded = false;

        while (!prime_is_founded) {
            current_prime++;
            if (isPrime(current_prime)) {
                prime_is_founded = true;
            }
        }
        current_number = current_prime;
        return current_prime;
    }

 private:
    int current_number;
    bool is_changed;
};