#include <bits/stdc++.h> // This will work only for g++ compiler.
#define for0(i, n) for (int i = 0; i < (int)(n); ++i) // 0 based indexing
#define for1(i, n) for (int i = 1; i <= (int)(n); ++i) // 1 based indexing
#define forc(i, l, r) for (int i = (int)(l); i <= (int)(r); ++i) // closed interver from l to r r inclusive
#define forr0(i, n) for (int i = (int)(n) - 1; i >= 0; --i) // reverse 0 based.
#define forr1(i, n) for (int i = (int)(n); i >= 1; --i) // reverse 1 based
//short hand for usual tokens
#define pb push_back
#define fi first
#define se second
// to be used with algorithms that processes a container Eg: find(all(c),42)
#define all(x) (x).begin(), (x).end() //Forward traversal
#define rall(x) (x).rbegin, (x).rend() //reverse traversal
// traversal function to avoid long template definition. Now with C++11 auto alleviates the pain.
#define tr(c,i) for(__typeof__((c)).begin() i = (c).begin(); i != (c).end(); i++)
// find if a given value is present in a container. Container version. Runs in log(n) for set and map
#define present(c,x) ((c).find(x) != (c).end())
//find version works for all containers. This is present in std namespace.
#define cpresent(c,x) (find(all(c),x) != (c).end())
// Avoiding wrap around of size()-1 where size is a unsigned int.
#define sz(a) int((a).size())
using namespace std;
// Shorthand for commonly used types
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef long long ll;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef double ld;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.precision(10);
cout << fixed;
long long n,m;
cin>>n>>m;
long long x=n;
long long i=1;
while(true){
x = min(n,x+m);
x-=i;
if(x<=0){
cout<<i<<endl;
break;
}
i++;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+ICAvLyBUaGlzIHdpbGwgd29yayBvbmx5IGZvciBnKysgY29tcGlsZXIuIAoKCiNkZWZpbmUgZm9yMChpLCBuKSBmb3IgKGludCBpID0gMDsgaSA8IChpbnQpKG4pOyArK2kpIC8vIDAgYmFzZWQgaW5kZXhpbmcKI2RlZmluZSBmb3IxKGksIG4pIGZvciAoaW50IGkgPSAxOyBpIDw9IChpbnQpKG4pOyArK2kpIC8vIDEgYmFzZWQgaW5kZXhpbmcKI2RlZmluZSBmb3JjKGksIGwsIHIpIGZvciAoaW50IGkgPSAoaW50KShsKTsgaSA8PSAoaW50KShyKTsgKytpKSAvLyBjbG9zZWQgaW50ZXJ2ZXIgZnJvbSBsIHRvIHIgciBpbmNsdXNpdmUKI2RlZmluZSBmb3JyMChpLCBuKSBmb3IgKGludCBpID0gKGludCkobikgLSAxOyBpID49IDA7IC0taSkgLy8gcmV2ZXJzZSAwIGJhc2VkLgojZGVmaW5lIGZvcnIxKGksIG4pIGZvciAoaW50IGkgPSAoaW50KShuKTsgaSA+PSAxOyAtLWkpIC8vIHJldmVyc2UgMSBiYXNlZAoKLy9zaG9ydCBoYW5kIGZvciB1c3VhbCB0b2tlbnMKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAoKLy8gdG8gYmUgdXNlZCB3aXRoIGFsZ29yaXRobXMgdGhhdCBwcm9jZXNzZXMgYSBjb250YWluZXIgRWc6IGZpbmQoYWxsKGMpLDQyKQojZGVmaW5lIGFsbCh4KSAoeCkuYmVnaW4oKSwgKHgpLmVuZCgpIC8vRm9yd2FyZCB0cmF2ZXJzYWwKI2RlZmluZSByYWxsKHgpICh4KS5yYmVnaW4sICh4KS5yZW5kKCkgLy9yZXZlcnNlIHRyYXZlcnNhbAoKLy8gdHJhdmVyc2FsIGZ1bmN0aW9uIHRvIGF2b2lkIGxvbmcgdGVtcGxhdGUgZGVmaW5pdGlvbi4gTm93IHdpdGggQysrMTEgYXV0byBhbGxldmlhdGVzIHRoZSBwYWluLgojZGVmaW5lIHRyKGMsaSkgZm9yKF9fdHlwZW9mX18oKGMpKS5iZWdpbigpIGkgPSAoYykuYmVnaW4oKTsgaSAhPSAoYykuZW5kKCk7IGkrKykKCi8vIGZpbmQgaWYgYSBnaXZlbiB2YWx1ZSBpcyBwcmVzZW50IGluIGEgY29udGFpbmVyLiBDb250YWluZXIgdmVyc2lvbi4gUnVucyBpbiBsb2cobikgZm9yIHNldCBhbmQgbWFwCiNkZWZpbmUgcHJlc2VudChjLHgpICgoYykuZmluZCh4KSAhPSAoYykuZW5kKCkpCgovL2ZpbmQgdmVyc2lvbiB3b3JrcyBmb3IgYWxsIGNvbnRhaW5lcnMuIFRoaXMgaXMgcHJlc2VudCBpbiBzdGQgbmFtZXNwYWNlLgojZGVmaW5lIGNwcmVzZW50KGMseCkgKGZpbmQoYWxsKGMpLHgpICE9IChjKS5lbmQoKSkKCi8vIEF2b2lkaW5nIHdyYXAgYXJvdW5kIG9mIHNpemUoKS0xIHdoZXJlIHNpemUgaXMgYSB1bnNpZ25lZCBpbnQuCiNkZWZpbmUgc3ooYSkgaW50KChhKS5zaXplKCkpCgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIFNob3J0aGFuZCBmb3IgY29tbW9ubHkgdXNlZCB0eXBlcwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3Rvcjx2aT4gdnZpOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwp0eXBlZGVmIHZlY3RvcjxpaT4gdmlpOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB2ZWN0b3I8bGw+IHZsbDsKdHlwZWRlZiB2ZWN0b3I8dmxsPiB2dmxsOwp0eXBlZGVmIGRvdWJsZSBsZDsKCgoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOwogICAgY291dC5wcmVjaXNpb24oMTApOwogICAgY291dCA8PCBmaXhlZDsKCWxvbmcgbG9uZyAgbixtOwoJY2luPj5uPj5tOwoJbG9uZyBsb25nIHg9bjsKCWxvbmcgbG9uZyBpPTE7Cgl3aGlsZSh0cnVlKXsKCQl4ID0gbWluKG4seCttKTsKCQl4LT1pOwoJCWlmKHg8PTApewoJCQljb3V0PDxpPDxlbmRsOwoJCQlicmVhazsKCQl9CgkJaSsrOwoJfQogICAgcmV0dXJuIDA7Cn0=