void abort() { };
                                                                                                                                                          
                                                                        
extern int __VERIFIER_nondet_int();
                        
void assume_abort_if_not(int cond) {
  if(!cond) {abort();}
}
/*@ 
    requires ((1 <= cond)) && (cond != 0);
    ensures (((1 <= cond) && (counter == \old(counter)))) && (1);
@*/
void __VERIFIER_assert(int cond) {
    if (!(cond)) {
    ERROR:
        {/*@ assert(0); */;}
    }
    return;
}

int counter = 0;
/*@ 
    requires ((counter == 0));
    ensures ((\old(counter) == 0));
@*/
int main() {
    int k;
    long long y, x, c;
    k = __VERIFIER_nondet_int();

    y = 0;
    x = 0;
    c = 0;

/*@
loop invariant (((((__int128) x * 2) == (y + ((__int128) y * y))) && (\old(counter) == 0)));
@*/
    while (counter++<10) {
        __VERIFIER_assert((y * y) - 2 * x + y == 0);

        if (!(c < k))
            break;

        c = c + 1;
        y = y + 1;
        x = y + x;
    }
    __VERIFIER_assert((y*y) - 2*x + y == 0);
     
    return 0;
}