void abort() { };

                                                                       
                                                  
                                                                             
                                                                   
                                                  
                                                                             
                                                                              
                                                                             

                                                                                                                                                               
                        
void assume_abort_if_not(int cond) {
  if(!cond) {abort();}
}
/*@ 
    requires ((cond != 0)) && (cond != 0);
    ensures ((cond != 0)) && (1);
@*/
void __VERIFIER_assert(int cond) {
  if (!(cond)) {
      ERROR: {/*@ assert(0); */;abort();}
  }
  return;
}
int __VERIFIER_nondet_int();
int main() {
    unsigned int i,j,a,b;
    int flag = __VERIFIER_nondet_int();
    a = 0;
    b = 0;
    j = 1;
    if (flag) {
        i = 0;
    } else {
        i = 1;
    }
/*@
loop invariant (((flag == 0) || (((0 == (i % 2)) && (a == b)) && ((((long long) a + 1) % 4294967296) == ((((long long) b + j) + ((unsigned long long) i * 4294967295)) % 4294967296)))));
@*/
    while (__VERIFIER_nondet_int()) {
        a++;
        b += (j - i);
        i += 2;
        if (i%2 == 0) {
            j += 2;
        } else {
            j++;
        }
    }
    if (flag) {
        __VERIFIER_assert(a == b);
    }
    return 0;
}