#include <stdio.h>
long long compute(int drops, int eggs, int floors)
{
int i;
long long ans = 0;
double t = 1;
for(i=1; ans<=floors && i<=eggs; ++i, ans+=t)
t *= (drops + 1.0 - i) / (1.0 * i);
return ans;
}
int main(void)
{
int floors, eggs;
scanf("%d%d", &floors
, &eggs
);
long long m, s=0, e=floors;
while(e-s>1) {
m = (s+e)/2;
if(compute(m, eggs, floors)<floors) s = m;
else e = m;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgpsb25nIGxvbmcgY29tcHV0ZShpbnQgZHJvcHMsIGludCBlZ2dzLCBpbnQgZmxvb3JzKQp7CiAgICBpbnQgaTsKICAgIGxvbmcgbG9uZyBhbnMgPSAwOwogICAgZG91YmxlIHQgPSAxOwogICAgZm9yKGk9MTsgYW5zPD1mbG9vcnMgJiYgaTw9ZWdnczsgKytpLCBhbnMrPXQpCiAgICAgICAgdCAqPSAoZHJvcHMgKyAxLjAgLSBpKSAvICgxLjAgKiBpKTsgCiAgICByZXR1cm4gYW5zOwp9CgppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgZmxvb3JzLCBlZ2dzOwogICAgc2NhbmYoIiVkJWQiLCAmZmxvb3JzLCAmZWdncyk7CgogICAgbG9uZyBsb25nIG0sIHM9MCwgZT1mbG9vcnM7CiAgICB3aGlsZShlLXM+MSkgewogICAgICAgIG0gPSAocytlKS8yOwogICAgICAgIGlmKGNvbXB1dGUobSwgZWdncywgZmxvb3JzKTxmbG9vcnMpIHMgPSBtOwogICAgICAgIGVsc2UgZSA9IG07CiAgICB9ICAgCiAgICBwcmludGYoIiVsbGRcbiIsIHMrMSk7Cn0=