#include <iostream>
#include <algorithm>
using namespace std;
int memo[33];
int mistakes_count(int n)
{
if (memo[n] == -1) {
int mx = 0;
for(int i = 1; i < n; ++i) { // 1 must be honest
int catr = i, catw = n - i; // If all are honest, repeat
if(catr > catw) {
mx = std::max(mx, mistakes_count(catr));
} else {
mx = std::max(mx, 1 + mistakes_count(catr));
}
}
memo[n] = mx;
}
return memo[n];
}
int main() {
for(int i = 1; i <= 32; ++i) memo[i] = -1;
cout << mistakes_count(32);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtZW1vWzMzXTsKCmludCBtaXN0YWtlc19jb3VudChpbnQgbikKewoJaWYgKG1lbW9bbl0gPT0gLTEpIHsKCQlpbnQgbXggPSAwOwoJCWZvcihpbnQgaSA9IDE7IGkgPCBuOyArK2kpIHsgLy8gMSBtdXN0IGJlIGhvbmVzdAoJCQlpbnQgY2F0ciA9IGksIGNhdHcgPSBuIC0gaTsgLy8gSWYgYWxsIGFyZSBob25lc3QsIHJlcGVhdAoJCQlpZihjYXRyID4gY2F0dykgewoJCQkJbXggPSBzdGQ6Om1heChteCwgbWlzdGFrZXNfY291bnQoY2F0cikpOwoJCQl9IGVsc2UgewoJCQkJbXggPSBzdGQ6Om1heChteCwgMSArIG1pc3Rha2VzX2NvdW50KGNhdHIpKTsKCQkJfQoJCX0KCQltZW1vW25dID0gbXg7Cgl9CglyZXR1cm4gbWVtb1tuXTsKfQoKaW50IG1haW4oKSB7Cglmb3IoaW50IGkgPSAxOyBpIDw9IDMyOyArK2kpIG1lbW9baV0gPSAtMTsKCWNvdXQgPDwgbWlzdGFrZXNfY291bnQoMzIpOwoJcmV0dXJuIDA7Cn0KCgo=