#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;
char ans[10];

bool check(long long l,long long r){
	cout << l << " " << r << endl;
    cout.flush();
	cin >> ans;
	return ans[0] == 'Y';
}

int main() {
    srand(time(0));

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;

    while(true) {
        l = max(1LL, l - k);
        r = min(n, r + k);
        if(r - l + 1 <= 45) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            if(check(cur, cur)) return 0;
            continue;
        }

        ll m = l+r>>1;

        if(check(l, m)) {
            r = m;
        } else {
            l = m + 1;
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    char ans[10];
    srand(time(0));

    while(true) {
        l = max(1LL, l - k);
        r = min(n, r + k);
        if(r - l + 1 <= 4 * k) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            cout << cur << " " << cur << endl;
            cout.flush();
            cin >> ans;
            if(ans[0] == 'B') return 0;
            if(ans[0] == 'Y') return 0;
        }

        ll m = (l + r) / 2;

        cout << l << " " << m << endl;
        cout.flush();
        cin >> ans;

        if(ans[0] == 'B') return 0;

        if(ans[0] == 'Y') {
            r = m;
        } else {
            l = m + 1;
        }
    }

    return 0;
}


#include<bits/stdc++.h>
using namespace std;
long long n,k,l,r,m,R;
char s[10];
bool check(long long l,long long r){
	cout << l << " " << r << endl;
    cout.flush();
	cin >> s;
	return s=="Yes";
}
int main(){
	srand(time(0));
	cin >> n >> k;
	l=1,r=n;
	while(1){
		l=max(1ll,l-k),r=min(n,r+k);
		if(r-l<=45){
			R=rand()%(r-l+1);
			if(check(l+R,l+R))return 0;
		}
		else{
			m=l+r>>1;
			if(check(l,m))r=m;
			else l=m+1;
		}
	}
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;
char ans[10];

bool check(long long l,long long r){
	cout << l << " " << r << endl;
    cout.flush();
	cin >> ans;
	return ans[0] == 'Y';
}

int main() {
    srand(time(0));

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;

    while(true) {
        l = max(1LL, l - k);
        r = min(n, r + k);
        if(r - l + 1 <= 4 * k) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            if(check(cur, cur)) return 0;
            continue;
        }

        ll m = l+r>>1;

        if(check(l, m)) {
            r = m;
        } else {
            l = m + 1;
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

map<ll, ll> mp;

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    string ans;

    while(true) {
        if(r - l + 1 <= 4 * k) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            cout << cur << " " << cur << endl;
            cout.flush();
            cin >> ans;
            if(ans == "Bad") return 0;
            if(ans == "Yes") return 0;
            else {
                l = max(1LL, l - k);
                r = min(n, r + k);
            }
        }

        ll m = (l + r) / 2;

        cout << l << " " << m << endl;
        cout.flush();
        cin >> ans;
        if(ans == "Bad") return 0;
        if(ans == "Yes") {
            l = max(l - k, 1LL);
            r = min(m + k, n);
        } else {
            l = max(m + 1 - k, 1LL);
            r = min(r + k, n);
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;
char ans[10];

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    srand(time(0));

    while(true) {
        l = max(1LL, l - k);
        r = min(n, r + k);
        if(r - l + 1 <= 4 * k) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            cout << cur << " " << cur << endl;
            cout.flush();
            cin >> ans;
            if(ans[0] == 'B') return 0;
            if(ans[0] == 'Y') return 0;
        }

        ll m = (l + r) / 2;

        cout << l << " " << m << endl;
        cout.flush();
        cin >> ans;

        if(ans[0] == 'B') return 0;

        if(ans[0] == 'Y') {
            r = m;
        } else {
            l = m + 1;
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;
char ans[10];

bool check(long long l,long long r){
	cout << l << " " << r << endl;
    cout.flush();
	cin >> ans;
	return ans[0] == 'Y';
}

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    srand(time(0));

    while(true) {
        l = max(1LL, l - k);
        r = min(n, r + k);
        if(r - l + 1 <= 4 * k) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            if(check(cur, cur)) return 0;
            continue;
        }

        ll m = (l + r) / 2;

        if(check(l, m)) {
            r = m;
        } else {
            l = m + 1;
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    string ans;

    while(true) {
        if(r - l + 1 <= 4 * k) {
            srand(time(0));
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            cout << cur << " " << cur << endl;
            cout.flush();
            cin >> ans;
            if(ans == "Bad") return 0;
            if(ans == "Yes") return 0;
            else {
                l = max(1LL, l - k);
                r = min(n, r + k);
            }
        }

        ll m = (l + r) / 2;

        cout << l << " " << m << endl;
        cout.flush();
        cin >> ans;
        if(ans == "Bad") return 0;
        if(ans == "Yes") {
            l = max(l - k, 1LL);
            r = min(m + k, n);
        } else {
            l = max(m + 1 - k, 1LL);
            r = min(r + k, n);
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

map<ll, ll> mp;

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    string ans;
    srand(time(0));

    while(true) {
        if(r - l + 1 <= 4 * k) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            cout << cur << " " << cur << endl;
            cout.flush();
            cin >> ans;
            if(ans == "Bad") return 0;
            if(ans == "Yes") return 0;
            else {
                l = max(1LL, l - k);
                r = min(n, r + k);
            }
        }

        ll m = (l + r) / 2;

        cout << l << " " << m << endl;
        cout.flush();
        cin >> ans;
        if(ans == "Bad") return 0;
        if(ans == "Yes") {
            l = max(l - k, 1LL);
            r = min(m + k, n);
        } else {
            l = max(m + 1 - k, 1LL);
            r = min(r + k, n);
        }
    }

    return 0;
}


#include<bits/stdc++.h>
using namespace std;
long long n,k,l,r,m,R;
char s[10];
bool check(long long l,long long r){
	cout << l << " " << r << endl;
    cout.flush();
	cin >> s;
	return s[0] == 'Y';
}
int main(){
	srand(time(0));
	cin >> n >> k;
	l=1,r=n;
	while(1){
		l=max(1ll,l-k),r=min(n,r+k);
		if(r-l<=45){
			R=rand()%(r-l+1);
			if(check(l+R,l+R))return 0;
		}
		else{
			m=l+r>>1;
			if(check(l,m))r=m;
			else l=m+1;
		}
	}
}


#include<bits/stdc++.h>
using namespace std;
long long n,k,l,r,m,R;
char s[10];
bool check(long long l,long long r){
	cout << l << " " << r << endl;
    cout.flush();
	scanf("%s",s);
	return s[0]=='Y';
}
int main(){
	srand(time(0));
	cin >> n >> k;
	l=1,r=n;
	while(1){
		l=max(1ll,l-k),r=min(n,r+k);
		if(r-l<=45){
			R=rand()%(r-l+1);
			if(check(l+R,l+R))return 0;
		}
		else{
			m=l+r>>1;
			if(check(l,m))r=m;
			else l=m+1;
		}
	}
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    string ans;

    while(true) {
        if(r - l + 1 <= 4 * k) {
            srand(time(0));
            ll cur = rand() % l + 1;
            assert(cur <= r);
            cout << cur << " " << cur << endl;
            cout.flush();
            cin >> ans;
            if(ans == "Bad") return 0;
            if(ans == "Yes") return 0;
            else {
                l = max(1LL, l - k);
                r = min(n, r + k);
            }
        }

        ll m = (l + r) / 2;

        cout << l << " " << m << endl;
        cout.flush();
        cin >> ans;
        if(ans == "Bad") return 0;
        if(ans == "Yes") {
            l = max(l - k, 1LL);
            r = min(m + k, n);
        } else {
            l = max(m + 1 - k, 1LL);
            r = min(r + k, n);
        }
    }

    return 0;
}


#include <stdio.h>
#include <random>
#include <time.h>
#include <cassert>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

char ans[10];

int main() {

    ll n, k;
    scanf("%I64d%I64d", &n, &k);

    ll l = 1, r = n;
    srand(time(0));

    while(true) {
        if(r - l + 1 <= 4 * k) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            printf("%I64d%I64d\n", cur, cur);
            fflush(stdout);
            scanf("%s", ans);
            if(ans[0] == 'B') return 0;
            if(ans[0] == 'Y') return 0;
            else {
                l = max(1LL, l - k);
                r = min(n, r + k);
            }
        }

        ll m = (l + r) / 2;

        printf("%I64d%I64d\n", &l, &m);
        fflush(stdout);
        scanf("%s", ans);
        if(ans[0] == 'B') return 0;
        if(ans[0] == 'Y') {
            l = max(l - k, 1LL);
            r = min(m + k, n);
        } else {
            l = max(m + 1 - k, 1LL);
            r = min(r + k, n);
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;
char ans[10];

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    srand(time(0));

    while(true) {
        l = max(1LL, l - k);
        r = min(n, r + k);
        if(r - l + 1 <= 4 * k) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            cout << cur << " " << cur << endl;
            cout.flush();
            cin >> ans;
            if(ans[0] == 'B') return 0;
            if(ans[0] == 'Y') return 0;
            continue;
        }

        ll m = (l + r) / 2;

        cout << l << " " << m << endl;
        cout.flush();
        cin >> ans;

        if(ans[0] == 'B') return 0;

        if(ans[0] == 'Y') {
            r = m;
        } else {
            l = m + 1;
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;
char ans[10];

bool check(long long l,long long r){
	cout << l << " " << r << endl;
    cout.flush();
	cin >> ans;
	return ans[0] == 'Y';
}

int main() {
    srand(time(0));

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    ll fk = 4 * k;
    while(true) {
        l = max(1LL, l - k);
        r = min(n, r + k);
        if(r - l + 1 <= fk + 1) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            if(check(cur, cur)) return 0;
            continue;
        }

        ll m = l+r>>1;

        if(check(l, m)) {
            r = m;
        } else {
            l = m + 1;
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;
char ans[10];

bool check(long long l,long long r){
	cout << l << " " << r << endl;
    cout.flush();
	cin >> ans;
	return ans[0] == 'Y';
}

int main() {
    srand(time(0));

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    ll fk = 4 * k;
    while(true) {
        l = max(1LL, l - k);
        r = min(n, r + k);
        if(r - l + 1 <= fk) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            if(check(cur, cur)) return 0;
            continue;
        }

        ll m = l+r>>1;

        if(check(l, m)) {
            r = m;
        } else {
            l = m + 1;
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

map<ll, ll> mp;

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    string ans;
    srand(time(0));

    while(true) {
        l = max(1LL, l - k);
        r = min(n, r + k);
        if(r - l + 1 <= 4 * k) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            cout << cur << " " << cur << endl;
            cout.flush();
            cin >> ans;
            if(ans[0] == 'B') return 0;
            if(ans[0] == 'Y') return 0;
        }

        ll m = (l + r) / 2;

        cout << l << " " << m << endl;
        cout.flush();
        cin >> ans;

        if(ans[0] == 'B') return 0;

        if(ans[0] == 'Y') {
            r = m;
        } else {
            l = m + 1;
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

map<ll, ll> mp;

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    string ans;
    srand(time(0));

    while(true) {
        if(r - l + 1 <= 4 * k) {
            ll cur = rand() % (r - l + 1) + l;
            assert(cur <= r);
            cout << cur << " " << cur << endl;
            cout.flush();
            cin >> ans;
            if(ans[0] == 'B') return 0;
            if(ans[0] == 'Y') return 0;
            else {
                l = max(1LL, l - k);
                r = min(n, r + k);
            }
        }

        ll m = (l + r) / 2;

        cout << l << " " << m << endl;
        cout.flush();
        cin >> ans;
        if(ans[0] == 'B') return 0;
        if(ans[0] == 'Y') {
            l = max(l - k, 1LL);
            r = min(m + k, n);
        } else {
            l = max(m + 1 - k, 1LL);
            r = min(r + k, n);
        }
    }

    return 0;
}


#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define vll vector <ll>
#define vvll vector <vll>
#define pll pair <ll, ll>

#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a - 1; i >= b; --i)

#define endl "\n"
#define pb push_back
#define pf push_front

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

#define sorta(v) sort(all(v))
#define sortd(v) sort(rall(v))

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

int main() {

    ll n, k;
    cin >> n >> k;

    ll l = 1, r = n;
    string ans;

    while(true) {
        if(r - l + 1 <= 4 * k) {
            srand(time(0));
            ll cur = rand() % l + 1;
            assert(cur <= r);
            cout << cur << " " << cur << endl;
            cout.flush();
            cin >> ans;
            if(ans == "Yes") return 0;
            else {
                l = max(1LL, l - k);
                r = min(n, r + k);
            }
        }

        ll m = (l + r) / 2;

        cout << l << " " << m << endl;
        cout.flush();
        cin >> ans;
        if(ans == "Yes") {
            l = max(l - k, 1LL);
            r = min(m + k, n);
        } else {
            l = max(m + 1 - k, 1LL);
            r = min(r + k, n);
        }
    }

    return 0;
}


#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename T>
int sz(const T &a){return int(a.size());}
bool query(int l, int r){
    printf("%d %d\n",l,r);
    string in;
    cin>>in;
    if(l==r&&in=="Yes")exit(0);
    if(in=="Bad")assert(0);
    return in=="Yes";
}
int main(){
    setbuf(stdout,NULL);
    ll n,k;
    cin>>n>>k;
    ll lo=1,hi=n;
    random_device rd;
    mt19937 gen(rd());
    while(1){
        while(1){
            ll mid=(lo+hi)/2;
            if(max(min(n,mid+k)-max(ll(1),lo-k)+1,min(n,hi+k)-max(ll(1),mid+1-k)+1)>=(hi-lo+1))break;
            if(query(lo,mid))lo=max(ll(1),lo-k),hi=min(n,mid+k);
            else lo=max(ll(1),mid+1-k),hi=min(n,hi+k);
        }
        uniform_int_distribution<ll> dis(lo, hi);
        ll poi=dis(gen);
        query(poi,poi);
        lo=max(ll(1),lo-k),hi=min(n,hi+k);
    }
    return 0;
}


#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename T>
int sz(const T &a){return int(a.size());}
bool query(int l, int r){
    printf("%d %d\n",l,r);
    string in;
    cin>>in;
    if(in=="Bad")assert(0);
    return in=="Yes";
}
int main(){
    setbuf(stdout,NULL);
    ll n,k;
    cin>>n>>k;
    ll lo=1,hi=n;
    random_device rd;
    mt19937 gen(rd());
    while(1){
        while(1){
            ll mid=(lo+hi)/2;
            if(max(min(n,mid+k)-max(ll(1),lo-k)+1,hi=min(n,hi+k)-max(ll(1),mid+1-k)+1)>=(hi-lo+1))break;
            if(query(lo,mid))lo=max(ll(1),lo-k),hi=min(n,mid+k);
            else lo=max(ll(1),mid+1-k),hi=min(n,hi+k);
        }
        uniform_int_distribution<ll> dis(lo, hi);
        ll poi=dis(gen);
        if(query(poi,poi))return 0;
        lo=max(ll(1),lo-k),hi=min(n,hi+k);
    }
    return 0;
}


#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename T>
int sz(const T &a){return int(a.size());}
int cnt=0;
bool query(int l, int r){
    printf("%d %d\n",l,r);
    cnt++;
    assert(cnt<=4500);
    string in;
    cin>>in;
    if(l==r&&in=="Yes")exit(0);
    if(in=="Bad")assert(0);
    return in=="Yes";
}
int main(){
    setbuf(stdout,NULL);
    ll n,k;
    cin>>n>>k;
    ll lo=1,hi=n;
    random_device rd;
    mt19937 gen(rd());
    while(1){
        while(1){
            ll mid=(lo+hi)/2;
            if(max(min(n,mid+k)-max(ll(1),lo-k)+1,min(n,hi+k)-max(ll(1),mid+1-k)+1)>=(hi-lo+1))break;
            if(query(lo,mid))lo=max(ll(1),lo-k),hi=min(n,mid+k);
            else lo=max(ll(1),mid+1-k),hi=min(n,hi+k);
        }
        uniform_int_distribution<ll> dis(lo, hi);
        ll poi=dis(gen);
        query(poi,poi);
        lo=max(ll(1),lo-k),hi=min(n,hi+k);
    }
    return 0;
}


#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename T>
int sz(const T &a){return int(a.size());}
int cnt=0;
bool query(ll l, ll r){
    printf("%lli %lli\n",l,r);
    cnt++;
    assert(cnt<=4500);
    string in;
    cin>>in;
    if(l==r&&in=="Yes")exit(0);
    if(in=="Bad")assert(0);
    return in=="Yes";
}
int main(){
    setbuf(stdout,NULL);
    ll n,k;
    cin>>n>>k;
    ll lo=1,hi=n;
    random_device rd;
    mt19937 gen(rd());
    while(1){
        while(1){
            ll mid=(lo+hi)/2;
            if(max(min(n,mid+k)-max(ll(1),lo-k)+1,min(n,hi+k)-max(ll(1),mid+1-k)+1)>=(hi-lo+1))break;
            if(query(lo,mid))lo=max(ll(1),lo-k),hi=min(n,mid+k);
            else lo=max(ll(1),mid+1-k),hi=min(n,hi+k);
        }
        uniform_int_distribution<ll> dis(lo, hi);
        ll poi=dis(gen);
        query(poi,poi);
        lo=max(ll(1),lo-k),hi=min(n,hi+k);
    }
    return 0;
}


#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename T>
int sz(const T &a){return int(a.size());}
bool query(int l, int r){
    printf("%d %d\n",l,r);
    string in;
    cin>>in;
    if(l==r&&in=="Yes")exit(0);
    if(in=="Bad")assert(0);
    return in=="Yes";
}
int main(){
    setbuf(stdout,NULL);
    ll n,k;
    cin>>n>>k;
    ll lo=1,hi=n;
    random_device rd;
    mt19937 gen(rd());
    while(1){
        int cnt=0;
        while(1){
            ll mid=(lo+hi)/2;
            if(max(min(n,mid+k)-max(ll(1),lo-k)+1,min(n,hi+k)-max(ll(1),mid+1-k)+1)>=(hi-lo+1))break;
            if(query(lo,mid))lo=max(ll(1),lo-k),hi=min(n,mid+k);
            else lo=max(ll(1),mid+1-k),hi=min(n,hi+k);
            cnt++;
            assert(cnt<=100);
        }
        uniform_int_distribution<ll> dis(lo, hi);
        ll poi=dis(gen);
        query(poi,poi);
        lo=max(ll(1),lo-k),hi=min(n,hi+k);
    }
    return 0;
}


#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename T>
int sz(const T &a){return int(a.size());}
bool query(int l, int r){
    printf("%d %d\n",l,r);
    string in;
    cin>>in;
    if(in=="Bad")assert(0);
    return in=="YES";
}
int main(){
    setbuf(stdout,NULL);
    ll n,k;
    cin>>n>>k;
    ll lo=1,hi=n;
    random_device rd;
    mt19937 gen(rd());
    while(1){
        while(1){
            ll mid=(lo+hi)/2;
            if(max(min(n,mid+k)-max(ll(1),lo-k)+1,hi=min(n,hi+k)-max(ll(1),mid+1-k)+1)>=(hi-lo+1))break;
            if(query(lo,mid))lo=max(ll(1),lo-k),hi=min(n,mid+k);
            else lo=max(ll(1),mid+1-k),hi=min(n,hi+k);
        }
        uniform_int_distribution<ll> dis(lo, hi);
        ll poi=dis(gen);
        if(query(poi,poi))return 0;
        lo=max(ll(1),lo-k),hi=min(n,hi+k);
    }
    return 0;
}


#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename T>
int sz(const T &a){return int(a.size());}
bool query(int l, int r){
    printf("%d %d\n",l,r);
    string in;
    cin>>in;
    if(in=="Bad")assert(0);
    return in=="Yes";
}
int main(){
    setbuf(stdout,NULL);
    ll n,k;
    cin>>n>>k;
    ll lo=1,hi=n;
    random_device rd;
    mt19937 gen(rd());
    while(1){
        int cnt=0;
        while(1){
            ll mid=(lo+hi)/2;
            if(max(min(n,mid+k)-max(ll(1),lo-k)+1,min(n,hi+k)-max(ll(1),mid+1-k)+1)>=(hi-lo+1))break;
            if(query(lo,mid))lo=max(ll(1),lo-k),hi=min(n,mid+k);
            else lo=max(ll(1),mid+1-k),hi=min(n,hi+k);
            cnt++;
            assert(cnt<=100);
        }
        uniform_int_distribution<ll> dis(lo, hi);
        ll poi=dis(gen);
        if(query(poi,poi))return 0;
        lo=max(ll(1),lo-k),hi=min(n,hi+k);
    }
    return 0;
}


#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename T>
int sz(const T &a){return int(a.size());}
bool query(int l, int r){
    printf("%d %d\n",l,r);
    string in;
    cin>>in;
    if(in=="Bad")assert(0);
    return in=="Yes";
}
int main(){
    setbuf(stdout,NULL);
    ll n,k;
    cin>>n>>k;
    ll lo=1,hi=n;
    random_device rd;
    mt19937 gen(rd());
    while(1){
        while(1){
            ll mid=(lo+hi)/2;
            if(max(min(n,mid+k)-max(ll(1),lo-k)+1,min(n,hi+k)-max(ll(1),mid+1-k)+1)>=(hi-lo+1))break;
            if(query(lo,mid))lo=max(ll(1),lo-k),hi=min(n,mid+k);
            else lo=max(ll(1),mid+1-k),hi=min(n,hi+k);
        }
        uniform_int_distribution<ll> dis(lo, hi);
        ll poi=dis(gen);
        if(query(poi,poi))return 0;
        lo=max(ll(1),lo-k),hi=min(n,hi+k);
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vii;
typedef vector<pll> vll;

#define PB push_back
//#define PB emplace_back
#define F first
#define S second
#define MP make_pair
//#define endl '\n'

const double eps = 1e-9;
const int inf = 2000000000;
const ll infLL = 9000000000000000000;
#define MOD 1000000007

#define mem(a,b) memset(a, b, sizeof(a) )
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))

#define optimize() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fraction() cout.unsetf(ios::floatfield); cout.precision(10); cout.setf(ios::fixed,ios::floatfield);

//
//debug
template<typename F,typename S>ostream&operator<<(ostream&os,const pair<F,S>&p){return os<<"("<<p.first<<", "<<p.second<<")";}
template<typename T>ostream&operator<<(ostream&os,const vector<T>&v){os<<"{";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"}";}
template<typename T>ostream&operator<<(ostream&os,const set<T>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<",";os<<*it;}return os<<"]";}
template<typename T>ostream&operator<<(ostream&os,const multiset<T>&v) {os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"]";}
template<typename F,typename S>ostream&operator<<(ostream&os,const map<F,S>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<it->first<<" = "<<it->second;}return os<<"]";}
#define dbg(args...) do {cerr << #args << " : "; faltu(args); } while(0)
void faltu(){cerr << endl;}
template<typename T>void faltu(T a[],int n){for(int i=0;i<n;++i)cerr<<a[i]<<' ';cerr<<endl;}
template<typename T,typename...hello>void faltu(T arg,const hello&...rest){cerr<<arg<<' ';faltu(rest...);}
//#else
//#define dbg(args...)

mt19937 rng((unsigned)chrono::system_clock::now().time_since_epoch().count()); //mt199937_64 for ll (**use this above main function**)

int main()
{
	optimize();
	ll n, k;
	cin >> n >> k;
	ll l = 1, r = n;
	while(1) {
		if( r-l+1 > 50 ) {
			ll mid = (l + r)/2;
			cout << l << " " << mid << endl;
			string s;
			cin >> s;
			if( s == "Bad" ) exit(0);
			if( s == "Yes" ) {
				l = max(1LL, l-k);
				r = min(n, mid+k);
			}
			else {
				l = max(1LL, mid+1-k);
				r = min(n, r+k);
			}
		}
		else {
			int idx = rng()%(r - l + 1);
			cout << l+idx << " " << l+idx << endl;
			string s;
			cin >> s;
			if( s == "Yes" ) exit(0);
			else {
				l = max(1LL, l-k);
				r = min(n, r+k);
			}
		}
	}
}


#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vii;
typedef vector<pll> vll;

#define PB push_back
//#define PB emplace_back
#define F first
#define S second
#define MP make_pair
//#define endl '\n'

const double eps = 1e-9;
const int inf = 2000000000;
const ll infLL = 9000000000000000000;
#define MOD 1000000007

#define mem(a,b) memset(a, b, sizeof(a) )
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))

#define optimize() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fraction() cout.unsetf(ios::floatfield); cout.precision(10); cout.setf(ios::fixed,ios::floatfield);

//
//debug
template<typename F,typename S>ostream&operator<<(ostream&os,const pair<F,S>&p){return os<<"("<<p.first<<", "<<p.second<<")";}
template<typename T>ostream&operator<<(ostream&os,const vector<T>&v){os<<"{";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"}";}
template<typename T>ostream&operator<<(ostream&os,const set<T>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<",";os<<*it;}return os<<"]";}
template<typename T>ostream&operator<<(ostream&os,const multiset<T>&v) {os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"]";}
template<typename F,typename S>ostream&operator<<(ostream&os,const map<F,S>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<it->first<<" = "<<it->second;}return os<<"]";}
#define dbg(args...) do {cerr << #args << " : "; faltu(args); } while(0)
void faltu(){cerr << endl;}
template<typename T>void faltu(T a[],int n){for(int i=0;i<n;++i)cerr<<a[i]<<' ';cerr<<endl;}
template<typename T,typename...hello>void faltu(T arg,const hello&...rest){cerr<<arg<<' ';faltu(rest...);}
//#else
//#define dbg(args...)

mt19937 rng((unsigned)chrono::system_clock::now().time_since_epoch().count()); //mt199937_64 for ll (**use this above main function**)

int main()
{
	optimize();
	ll n, k;
	cin >> n >> k;
	ll l = 1, r = n;
	while(1) {
		if( r-l+1 > 21 ) {
			ll mid = (l + r)/2;
			cout << l << " " << mid << endl;
			string s;
			cin >> s;
			if( s == "Bad" ) exit(0);
			if( s == "Yes" ) {
				l = max(1LL, l-k);
				r = min(n, mid+k);
			}
			else {
				l = max(1LL, mid+1-k);
				r = min(n, r+k);
			}
		}
		else {
			int idx = rng()%(r - l + 1);
			cout << l+idx << " " << l+idx << endl;
			string s;
			cin >> s;
			if( s == "Yes" ) exit(0);
			else {
				l = max(1LL, l-k);
				r = min(n, r+k);
			}
		}
	}
}


#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vii;
typedef vector<pll> vll;

#define PB push_back
//#define PB emplace_back
#define F first
#define S second
#define MP make_pair
//#define endl '\n'

const double eps = 1e-9;
const int inf = 2000000000;
const ll infLL = 9000000000000000000;
#define MOD 1000000007

#define mem(a,b) memset(a, b, sizeof(a) )
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))

#define optimize() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fraction() cout.unsetf(ios::floatfield); cout.precision(10); cout.setf(ios::fixed,ios::floatfield);

//
//debug
template<typename F,typename S>ostream&operator<<(ostream&os,const pair<F,S>&p){return os<<"("<<p.first<<", "<<p.second<<")";}
template<typename T>ostream&operator<<(ostream&os,const vector<T>&v){os<<"{";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"}";}
template<typename T>ostream&operator<<(ostream&os,const set<T>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<",";os<<*it;}return os<<"]";}
template<typename T>ostream&operator<<(ostream&os,const multiset<T>&v) {os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"]";}
template<typename F,typename S>ostream&operator<<(ostream&os,const map<F,S>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<it->first<<" = "<<it->second;}return os<<"]";}
#define dbg(args...) do {cerr << #args << " : "; faltu(args); } while(0)
void faltu(){cerr << endl;}
template<typename T>void faltu(T a[],int n){for(int i=0;i<n;++i)cerr<<a[i]<<' ';cerr<<endl;}
template<typename T,typename...hello>void faltu(T arg,const hello&...rest){cerr<<arg<<' ';faltu(rest...);}
//#else
//#define dbg(args...)

mt19937 rng((unsigned)chrono::system_clock::now().time_since_epoch().count()); //mt199937_64 for ll (**use this above main function**)

int main()
{
	optimize();
	ll n, k;
	cin >> n >> k;
	ll l = 1, r = n;
	while(1) {
		if( r-l+1 > 25 ) {
			ll mid = (l + r)/2;
			cout << l << " " << mid << endl;
			string s;
			cin >> s;
			if( s == "Bad" ) exit(0);
			if( s == "Yes" ) {
				l = max(1LL, l-k);
				r = min(n, mid+k);
			}
			else {
				l = max(1LL, mid+1-k);
				r = min(n, r+k);
			}
		}
		else {
			int idx = rng()%(r - l + 1);
			cout << l+idx << " " << l+idx << endl;
			string s;
			cin >> s;
			if( s == "Yes" ) exit(0);
			else {
				l = max(1LL, l-k);
				r = min(n, r+k);
			}
		}
	}
}


#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vii;
typedef vector<pll> vll;

#define PB push_back
//#define PB emplace_back
#define F first
#define S second
#define MP make_pair
//#define endl '\n'

const double eps = 1e-9;
const int inf = 2000000000;
const ll infLL = 9000000000000000000;
#define MOD 1000000007

#define mem(a,b) memset(a, b, sizeof(a) )
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))

#define optimize() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fraction() cout.unsetf(ios::floatfield); cout.precision(10); cout.setf(ios::fixed,ios::floatfield);

//
//debug
template<typename F,typename S>ostream&operator<<(ostream&os,const pair<F,S>&p){return os<<"("<<p.first<<", "<<p.second<<")";}
template<typename T>ostream&operator<<(ostream&os,const vector<T>&v){os<<"{";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"}";}
template<typename T>ostream&operator<<(ostream&os,const set<T>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<",";os<<*it;}return os<<"]";}
template<typename T>ostream&operator<<(ostream&os,const multiset<T>&v) {os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"]";}
template<typename F,typename S>ostream&operator<<(ostream&os,const map<F,S>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<it->first<<" = "<<it->second;}return os<<"]";}
#define dbg(args...) do {cerr << #args << " : "; faltu(args); } while(0)
void faltu(){cerr << endl;}
template<typename T>void faltu(T a[],int n){for(int i=0;i<n;++i)cerr<<a[i]<<' ';cerr<<endl;}
template<typename T,typename...hello>void faltu(T arg,const hello&...rest){cerr<<arg<<' ';faltu(rest...);}
//#else
//#define dbg(args...)

mt19937_64 rng((unsigned)chrono::system_clock::now().time_since_epoch().count()); //mt199937_64 for ll (**use this above main function**)

int main()
{
	optimize();
	ll n, k;
	cin >> n >> k;
	ll l = 1, r = n;
	while(1) {
		if( r-l+1 > 25 ) {
			ll mid = (l + r)/2;
			cout << l << " " << mid << endl;
			string s;
			cin >> s;
			if( s == "Bad" ) exit(0);
			if( s == "Yes" ) {
				l = max(1LL, l-k);
				r = min(n, mid+k);
			}
			else {
				l = max(1LL, mid+1-k);
				r = min(n, r+k);
			}
		}
		else {
			ll idx = rng()%(r - l + 1);
			cout << l+idx << " " << l+idx << endl;
			string s;
			cin >> s;
			if( s == "Yes" ) exit(0);
			else {
				l = max(1LL, l-k);
				r = min(n, r+k);
			}
		}
	}
}


#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vii;
typedef vector<pll> vll;

#define PB push_back
//#define PB emplace_back
#define F first
#define S second
#define MP make_pair
//#define endl '\n'

const double eps = 1e-9;
const int inf = 2000000000;
const ll infLL = 9000000000000000000;
#define MOD 1000000007

#define mem(a,b) memset(a, b, sizeof(a) )
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))

#define optimize() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fraction() cout.unsetf(ios::floatfield); cout.precision(10); cout.setf(ios::fixed,ios::floatfield);

//
//debug
template<typename F,typename S>ostream&operator<<(ostream&os,const pair<F,S>&p){return os<<"("<<p.first<<", "<<p.second<<")";}
template<typename T>ostream&operator<<(ostream&os,const vector<T>&v){os<<"{";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"}";}
template<typename T>ostream&operator<<(ostream&os,const set<T>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<",";os<<*it;}return os<<"]";}
template<typename T>ostream&operator<<(ostream&os,const multiset<T>&v) {os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"]";}
template<typename F,typename S>ostream&operator<<(ostream&os,const map<F,S>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<it->first<<" = "<<it->second;}return os<<"]";}
#define dbg(args...) do {cerr << #args << " : "; faltu(args); } while(0)
void faltu(){cerr << endl;}
template<typename T>void faltu(T a[],int n){for(int i=0;i<n;++i)cerr<<a[i]<<' ';cerr<<endl;}
template<typename T,typename...hello>void faltu(T arg,const hello&...rest){cerr<<arg<<' ';faltu(rest...);}
//#else
//#define dbg(args...)

mt19937_64 rng((unsigned)chrono::system_clock::now().time_since_epoch().count()); //mt199937_64 for ll (**use this above main function**)

int main()
{
	optimize();
	ll n, k;
	cin >> n >> k;
	ll l = 1, r = n;
	while(1) {
		if( r-l+1 > 25 ) {
			ll mid = (l + r)/2;
			cout << l << " " << mid << endl;
			string s;
			cin >> s;
			if( s == "Bad" ) exit(0);
			if( s == "Yes" ) {
				l = max(1LL, l-k);
				r = min(n, mid+k);
			}
			else {
				l = max(1LL, mid+1-k);
				r = min(n, r+k);
			}
		}
		else {
			ll idx = rng();
			cout << idx << " " << idx << endl;
			string s;
			cin >> s;
			if( s == "Yes" ) exit(0);
			else {
				l = max(1LL, l-k);
				r = min(n, r+k);
			}
		}
	}
}


//#include <ext/pb_ds/assoc_container.hpp>
#include <bits/stdc++.h>
using namespace std;
//using namespace __gnu_pbds;
//template <class c, class cmp = less<c> > using ordered_set = tree<c, null_type, cmp, rb_tree_tag, tree_order_statistics_node_update>;
#define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
  const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
template<class T> ostream& operator<<(ostream &os, vector<T> V) {os << "[ "; for(auto v : V) os << v << " "; return os << "]";}
template<class L, class R> ostream& operator<<(ostream &os, pair<L,R> P) {return os << "(" << P.first << "," << P.second << ")";}
template <typename T,typename U>pair<T,U> operator+(const pair<T,U> & l,const std::pair<T,U> & r) { return {l.first+r.first,l.second+r.second};}
typedef long long int ll;
const ll mod =1e9+7;
const int maxn = 500005;
#define endl '\n'
#define int ll
#define ld long double
#define all(x) (x).begin(),(x).end()
mt19937 mrand(chrono::high_resolution_clock::now().time_since_epoch().count());
int ask(int l,int r){
  cout<<l<<" "<<r<<endl;
  string s;
  cin>>s ;
  if(s[0] == 'B') exit(0);
  return (s[0] == 'Y');
}
void ask_random(int l,int r){
  int y = mrand()%(r-l+1);
  l += y;
  cout<<l<<" "<<l<<endl;
  string s;
  cin>>s ;
  if(s[0] == 'B') exit(0);
  if(s == "Yes")
    exit(0);

}
int32_t main()
{

  //   #ifndef ONLINE_JUDGE
  // freopen("input.txt", "r", stdin);
  // freopen("output.txt", "w", stdout);
  // #endif
  int n,k;
  cin>>n>>k;
  int l = 1,r = n;
  while(true){
    l = max(1ll,l-k) ,r = min(r+k,n);
    if(r-l>4*k+2){
      int m = (l+r)>>1;
      if(ask(l,m))
        {
          r = m;
        }
      else
      {
        l = m+1;
      }
    }
    else
      ask_random(l,r);
  }

}


//#include <ext/pb_ds/assoc_container.hpp>
#include <bits/stdc++.h>
using namespace std;
//using namespace __gnu_pbds;
//template <class c, class cmp = less<c> > using ordered_set = tree<c, null_type, cmp, rb_tree_tag, tree_order_statistics_node_update>;
#define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
  const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
template<class T> ostream& operator<<(ostream &os, vector<T> V) {os << "[ "; for(auto v : V) os << v << " "; return os << "]";}
template<class L, class R> ostream& operator<<(ostream &os, pair<L,R> P) {return os << "(" << P.first << "," << P.second << ")";}
template <typename T,typename U>pair<T,U> operator+(const pair<T,U> & l,const std::pair<T,U> & r) { return {l.first+r.first,l.second+r.second};}
typedef long long int ll;
const ll mod =1e9+7;
const int maxn = 500005;
#define endl '\n'
#define int ll
#define ld long double
#define all(x) (x).begin(),(x).end()
mt19937 mrand(chrono::high_resolution_clock::now().time_since_epoch().count());
int ask(int l,int r){
  cout<<l<<" "<<r<<endl;
  string s;
  cin>>s ;
  if(s == "Bad") exit(0);
  return (s == "Yes");
}
void ask_random(int l,int r){
  int y = mrand()%(r-l+1);
  l += y;
  cout<<l<<" "<<l<<endl;
  string s;
  cin>>s ;
  if(s == "Bad") exit(0);
  if(s == "Yes")
    exit(0);

}
int32_t main()
{
  //  IOS
  //   #ifndef ONLINE_JUDGE
  // freopen("input.txt", "r", stdin);
  // freopen("output.txt", "w", stdout);
  // #endif
  int n,k;
  cin>>n>>k;
  int l = 1,r = n;
  while(true){
    l = max(1ll,l-k) ,r = r = min(r+k,n);
    if(r-l>4*k){
      int m = (l+r)>>1;
      if(ask(l,m))
        {
          l = max(1ll,l-k);
          r = min(n,m+k);
        }
      else
      {
        l = max(1ll,m-k);
        r = min(r+k,n);
      }
    }
    else
      ask_random(l,r);
  }

}


//#include <ext/pb_ds/assoc_container.hpp>
#include <bits/stdc++.h>
using namespace std;
//using namespace __gnu_pbds;
//template <class c, class cmp = less<c> > using ordered_set = tree<c, null_type, cmp, rb_tree_tag, tree_order_statistics_node_update>;
#define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
  const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
template<class T> ostream& operator<<(ostream &os, vector<T> V) {os << "[ "; for(auto v : V) os << v << " "; return os << "]";}
template<class L, class R> ostream& operator<<(ostream &os, pair<L,R> P) {return os << "(" << P.first << "," << P.second << ")";}
template <typename T,typename U>pair<T,U> operator+(const pair<T,U> & l,const std::pair<T,U> & r) { return {l.first+r.first,l.second+r.second};}
typedef long long int ll;
const ll mod =1e9+7;
const int maxn = 500005;
#define endl '\n'
#define int ll
#define ld long double
#define all(x) (x).begin(),(x).end()
mt19937 mrand(chrono::high_resolution_clock::now().time_since_epoch().count());
int ask(int l,int r){
  cout<<l<<" "<<r<<endl;
  string s;
  cin>>s ;
  if(s == "Bad") exit(0);
  return (s == "Yes");
}
void ask_random(int l,int r){
  int y = mrand()%(r-l+1);
  l += y;
  cout<<l<<" "<<l<<endl;
  string s;
  cin>>s ;
  if(s == "Bad") exit(0);
  if(s == "Yes")
    exit(0);

}
int32_t main()
{
  //  IOS
  //   #ifndef ONLINE_JUDGE
  // freopen("input.txt", "r", stdin);
  // freopen("output.txt", "w", stdout);
  // #endif
  int n,k;
  cin>>n>>k;
  int l = 1,r = n;
  while(true){
    l = max(1ll,l-k) ,r = r = min(r+k,n);
    while(r-l>4*k){
      int m = (l+r)>>1;
      if(ask(l,m))
        {
          l = max(1ll,l-k);
          r = min(n,m+k);
        }
      else
      {
        l = max(1ll,m-k);
        r = min(r+k,n);
      }
    }
    ask_random(l,r);
  }

}


//#include <ext/pb_ds/assoc_container.hpp>
#include <bits/stdc++.h>
using namespace std;
//using namespace __gnu_pbds;
//template <class c, class cmp = less<c> > using ordered_set = tree<c, null_type, cmp, rb_tree_tag, tree_order_statistics_node_update>;
#define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
  const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
template<class T> ostream& operator<<(ostream &os, vector<T> V) {os << "[ "; for(auto v : V) os << v << " "; return os << "]";}
template<class L, class R> ostream& operator<<(ostream &os, pair<L,R> P) {return os << "(" << P.first << "," << P.second << ")";}
template <typename T,typename U>pair<T,U> operator+(const pair<T,U> & l,const std::pair<T,U> & r) { return {l.first+r.first,l.second+r.second};}
typedef long long int ll;
const ll mod =1e9+7;
const int maxn = 500005;
#define endl '\n'
#define int ll
#define ld long double
#define all(x) (x).begin(),(x).end()
mt19937 mrand(chrono::high_resolution_clock::now().time_since_epoch().count());
int ask(int l,int r){
  cout<<l<<" "<<r<<endl;
  string s;
  cin>>s ;
  if(s == "Bad") exit(0);
  return (s == "Yes");
}
void ask_random(int l,int r){
  int y = mrand()%(r-l+1);
  l += y;
  cout<<l<<" "<<l<<endl;
  string s;
  cin>>s ;
  if(s == "Bad") exit(0);
  if(s == "Yes")
    exit(0);

}
int32_t main()
{
  //  IOS
  //   #ifndef ONLINE_JUDGE
  // freopen("input.txt", "r", stdin);
  // freopen("output.txt", "w", stdout);
  // #endif
  int n,k;
  cin>>n>>k;
  int l = 1,r = n;
  while(true){
    l = max(1ll,l-k) ,r = r = min(r+k,n);
    if(r-l>4*k){
      int m = (l+r)>>1;
      if(ask(l,m))
        {
          r = m;
        }
      else
      {
        l = m+1;
      }
    }
    else
      ask_random(l,r);
  }

}


//#include <ext/pb_ds/assoc_container.hpp>
#include <bits/stdc++.h>
using namespace std;
//using namespace __gnu_pbds;
//template <class c, class cmp = less<c> > using ordered_set = tree<c, null_type, cmp, rb_tree_tag, tree_order_statistics_node_update>;
#define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
  const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
template<class T> ostream& operator<<(ostream &os, vector<T> V) {os << "[ "; for(auto v : V) os << v << " "; return os << "]";}
template<class L, class R> ostream& operator<<(ostream &os, pair<L,R> P) {return os << "(" << P.first << "," << P.second << ")";}
template <typename T,typename U>pair<T,U> operator+(const pair<T,U> & l,const std::pair<T,U> & r) { return {l.first+r.first,l.second+r.second};}
typedef long long int ll;
const ll mod =1e9+7;
const int maxn = 500005;
#define endl '\n'
#define int ll
#define ld long double
#define all(x) (x).begin(),(x).end()
mt19937 mrand(chrono::high_resolution_clock::now().time_since_epoch().count());
int ask(int l,int r){
  cout<<l<<" "<<r<<endl;
  string s;
  cin>>s ;
  if(s[0] == 'B') exit(0);
  return (s[0] == 'Y');
}
void ask_random(int l,int r){
  int y = mrand()%(r-l+1);
  l += y;
  cout<<l<<" "<<l<<endl;
  string s;
  cin>>s ;
  if(s[0] == 'B') exit(0);
  if(s == "Yes")
    exit(0);

}
int32_t main()
{
  IOS
  //   #ifndef ONLINE_JUDGE
  // freopen("input.txt", "r", stdin);
  // freopen("output.txt", "w", stdout);
  // #endif
  int n,k;
  cin>>n>>k;
  int l = 1,r = n;
  while(true){
    l = max(1ll,l-k) ,r = min(r+k,n);
    if(r-l>4*k+2){
      int m = (l+r)>>1;
      if(ask(l,m))
        {
          r = m;
        }
      else
      {
        l = m+1;
      }
    }
    else
      ask_random(l,r);
  }

}


//#include <ext/pb_ds/assoc_container.hpp>
#include <bits/stdc++.h>
using namespace std;
//using namespace __gnu_pbds;
//template <class c, class cmp = less<c> > using ordered_set = tree<c, null_type, cmp, rb_tree_tag, tree_order_statistics_node_update>;
#define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
  const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
template<class T> ostream& operator<<(ostream &os, vector<T> V) {os << "[ "; for(auto v : V) os << v << " "; return os << "]";}
template<class L, class R> ostream& operator<<(ostream &os, pair<L,R> P) {return os << "(" << P.first << "," << P.second << ")";}
template <typename T,typename U>pair<T,U> operator+(const pair<T,U> & l,const std::pair<T,U> & r) { return {l.first+r.first,l.second+r.second};}
typedef long long int ll;
const ll mod =1e9+7;
const int maxn = 500005;
#define endl '\n'
#define int ll
#define ld long double
#define all(x) (x).begin(),(x).end()
mt19937 mrand(chrono::high_resolution_clock::now().time_since_epoch().count());
int ask(int l,int r){
  cout<<l<<" "<<r<<endl;
  string s;
  cin>>s ;
  return (s == "Yes");
}
int ask_random(int l,int r){
  int y = mrand()%(r-l+1);
  l += y;
  cout<<l<<" "<<l<<endl;
  string s;
  cin>>s ;
  if(s == "Yes")
    exit(0);

}
int32_t main()
{
  //  IOS
  //   #ifndef ONLINE_JUDGE
  // freopen("input.txt", "r", stdin);
  // freopen("output.txt", "w", stdout);
  // #endif
  int n,k;
  cin>>n>>k;

  while(true){
    int l = 1,r = n;
    while(r-l>4*k){
      int m = (l+r)>>1;
      if(ask(l,m))
        {
          l = max(1ll,l-k);
          r = min(n,m+k);
        }
      else
      {
        l = max(1ll,m-k);
        r = min(r+k,n);
      }
    }
    ask_random(l,r);
  }

}


//#include <ext/pb_ds/assoc_container.hpp>
#include <bits/stdc++.h>
using namespace std;
//using namespace __gnu_pbds;
//template <class c, class cmp = less<c> > using ordered_set = tree<c, null_type, cmp, rb_tree_tag, tree_order_statistics_node_update>;
#define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
  const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
template<class T> ostream& operator<<(ostream &os, vector<T> V) {os << "[ "; for(auto v : V) os << v << " "; return os << "]";}
template<class L, class R> ostream& operator<<(ostream &os, pair<L,R> P) {return os << "(" << P.first << "," << P.second << ")";}
template <typename T,typename U>pair<T,U> operator+(const pair<T,U> & l,const std::pair<T,U> & r) { return {l.first+r.first,l.second+r.second};}
typedef long long int ll;
const ll mod =1e9+7;
const int maxn = 500005;
#define endl '\n'
#define int ll
#define ld long double
#define all(x) (x).begin(),(x).end()
mt19937 mrand(chrono::high_resolution_clock::now().time_since_epoch().count());
int ask(int l,int r){
  cout<<l<<" "<<r<<endl;
  string s;
  cin>>s ;
  if(s == "Bad") exit(0);
  return (s == "Yes");
}
void ask_random(int l,int r){
  int y = mrand()%(r-l+1);
  l += y;
  cout<<l<<" "<<l<<endl;
  string s;
  cin>>s ;
  if(s == "Bad") exit(0);
  if(s == "Yes")
    exit(0);

}
int32_t main()
{
  //  IOS
  //   #ifndef ONLINE_JUDGE
  // freopen("input.txt", "r", stdin);
  // freopen("output.txt", "w", stdout);
  // #endif
  int n,k;
  cin>>n>>k;

  while(true){
    int l = 1,r = n;
    while(r-l>4*k){
      int m = (l+r)>>1;
      if(ask(l,m))
        {
          l = max(1ll,l-k);
          r = min(n,m+k);
        }
      else
      {
        l = max(1ll,m-k);
        r = min(r+k,n);
      }
    }
    ask_random(l,r);
  }

}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return ((LL)rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 80 || n < 300)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return ((LL)rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 20 || n <= 200)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return ((LL)rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 40 || n < 100)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return ((LL)rand() * 100000000LL + rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 75)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
	srand(4444);
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return ((LL)rand() * 100000000LL + rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 50)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
	srand(4444);
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return (rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 50)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
	srand(4444);
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return (rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 50)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
//	srand(4444);
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return rand() % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 10 || n < 200)
		{
		int s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k, y + k);

	}

int main()
	{
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return rand() % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x < 20)
		{
		int x = R(x, y);
		if(check(x, x))
			return;

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k, y + k);

	}

int main()
	{
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return ((LL)rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 100 || n < 300)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	return 0;
	}

int R(LL a, LL b)
	{
	return rand() % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x < 20)
		{
		int x = R(x, y);
		if(check(x, x))
			return;

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k, y + k);

	}

int main()
	{
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return rand() % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 30 || n < 100)
		{
		int s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return ((LL)rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 70)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return ((LL)rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 150)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k + 1, y + k);

	}

int main()
	{
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <bits/stdc++.h>
using namespace std;
#define PII pair <int, int>
#define VI vector <int>
#define LL long long
#define LD long double
#define F first
#define S second
#define siz(x) ((int)x.size())
#define PB push_back
#define pb pop_back
#define VPII vector <PII>
#define FOR(i, b, e) for (int i = (b); i <= (int)(e); ++i)
#define FORD(i, b, e) for (int i = (b); i >= (int)(e); --i)
#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define sim template <class s
sim, class n > ostream &operator<<(ostream &os, pair<n, s> x)
	{
		return os << "<" << x.first << ", " << x.second << ">";
	}
#define f first
#define s second
sim, class n > void mini(s & x, n y) {if (x > y) x = y;}
sim, class n > void maxi(s & x, n y) {if (x < y) x = y;}
sim > auto operator<<(ostream &os, s x) -> typename enable_if < !is_same<s, string>::value, decltype(x.end(), os) >::type
	{
	int o = 0; os << "{"; for (auto c : x) {if (o++) os << ", "; os << c;} return os << "}";}
void dor() {cerr << endl;}
sim, class...n > void dor(s x, n...y) {cerr << boolalpha << x; dor(y...);}
#ifdef DEB
#define debug(...) cerr << __FUNCTION__ << "#" << __LINE__ << ": ",::dor(__VA_ARGS__)
#else
#define debug(...)
#endif
#define I(x) #x " = ", x, " "

bool check(LL a, LL b)
	{
	cout << a << " " << b << endl;
	string s;
	cin>>s;
	if(s == "Yes")return 1;
	if(s == "Bad")exit(0);
	return 0;
	}

LL R(LL a, LL b)
	{
	return ((LL)rand() * 100000000LL + rand()) % (b - a + 1) + a; // small valuese on cf will be enought
	}

LL n, k;
void go(LL x, LL y)
	{
	maxi(x, 1);
	mini(y, n);

	if(y - x + 1 <= 75)
		{
		LL s = R(x, y);
		if(check(s, s))
			exit(0);

		go(x-k, y+k);
		return;
		}

	LL sr = (x + y) / 2;
	if(check(x, sr))
		go(x - k, sr + k);
	else
		go(sr - k, y + k);

	}

int main()
	{
	srand(4444);
	scanf("%lld%lld", &n, &k);
	go(1, n);
	}


#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <cmath>
#include <set>
#include <map>
#include <cstdio>
#include <stdlib.h>
#include <stack>
#include <numeric>
#include <bitset>
#include <cctype>
#include <list>
#include <assert.h>
#include <random>
#include <unordered_map>
#include <ctime>
typedef  long long ll;
using namespace std;
#define INF 2147483647
#define infL (1LL<<60)
#define inf (1<<30)
#define inf9 (1000000000)
#define MOD 1000000007
#define EPS 1e-9
#define Gr 9.8
#define PI acos(-1)
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define REQ(i,n) for(int (i)=1;(i)<=(int)(n);(i)++)
#define lch (rt<<1)
#define rch (rt<<1|1)
#define readmp(n) for(int i=0,u,v;i<n;i++) {scanf("%d%d",&u,&v); mp[u].push_back(v); mp[v].push_back(u);}
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef long double ld;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef ll ValType;
template<typename  T> void maxtt(T& t1, T t2) {
    t1=max(t1,t2);
}
template<typename  T> void mintt(T& t1, T t2) {
    t1=min(t1,t2);
}
#define MAX 105

bool debug = 0;
int n,m,k;
int dx[4] = {0,1,0,-1}, dy[4] = {1,0,-1,0};
string direc="RDLU";
ll ln, lk, lm;
void etp(bool f = 0) {
    puts(f ?"YES" : "NO");
    exit(0);
}
void addmod(int &x, int y, int mod = MOD) {
    assert(y>=0);
    x+=y; if (x>=mod) x-=mod;
    assert(x>=0 && x<mod);
}
void et(int x=-1) {
    printf("%d\n", x); exit(0);
}
ll fastPow(ll x, ll y, ll mod=MOD) {
    ll ans = 1;
    while(y>0) {
        if(y&1) ans = (x * ans)%mod;
        x = x*x%mod;
        y>>=1;
    }
    return ans;
}
ll gcd1(ll x, ll y) { return y?gcd1(y,x%y):x;}

bool rd(ll l, ll r) {
    cout<<l<<" "<<r<<endl;
    string x; cin>>x;
    if(x[0]=='Y') {
        if(l==r) exit(0);
        return 1;
    }
    if (x[0]=='B') exit(0);
    return 0;
}
void fmain(int ID) {
    cin>>ln>>k;
    ll l=1,r=ln;

    mt19937 RND(chrono::steady_clock::now().time_since_epoch().count());

    REP(i,4500){
        if (r-l+1<=50) {
            int x = uniform_int_distribution<int>(0, (int)(r - l))(RND);
            ll tar = l+x;
            rd(tar, tar);

            l=max(1LL,l-k);
            r=min(ln, r+k);
            continue;
        }
        ll mid=(l+r)/2;
        bool fg = rd(l, mid);
        if (fg) {
            r=mid;
        } else l=mid+1;
        l=max(1LL,l-k);
        r=min(ln, r+k);
    }
}

int main() {
    int t=1;
//    scanf("%d", &t);
    REQ(i,t) {
        fmain(i);
    }
    return 0;
}


#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <cmath>
#include <set>
#include <map>
#include <cstdio>
#include <stdlib.h>
#include <stack>
#include <numeric>
#include <bitset>
#include <cctype>
#include <list>
#include <assert.h>
#include <random>
#include <unordered_map>
#include <ctime>
typedef  long long ll;
using namespace std;
#define INF 2147483647
#define infL (1LL<<60)
#define inf (1<<30)
#define inf9 (1000000000)
#define MOD 1000000007
#define EPS 1e-9
#define Gr 9.8
#define PI acos(-1)
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define REQ(i,n) for(int (i)=1;(i)<=(int)(n);(i)++)
#define lch (rt<<1)
#define rch (rt<<1|1)
#define readmp(n) for(int i=0,u,v;i<n;i++) {scanf("%d%d",&u,&v); mp[u].push_back(v); mp[v].push_back(u);}
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef long double ld;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef ll ValType;
template<typename  T> void maxtt(T& t1, T t2) {
    t1=max(t1,t2);
}
template<typename  T> void mintt(T& t1, T t2) {
    t1=min(t1,t2);
}
#define MAX 105

bool debug = 0;
int n,m,k;
int dx[4] = {0,1,0,-1}, dy[4] = {1,0,-1,0};
string direc="RDLU";
ll ln, lk, lm;
void etp(bool f = 0) {
    puts(f ?"YES" : "NO");
    exit(0);
}
void addmod(int &x, int y, int mod = MOD) {
    assert(y>=0);
    x+=y; if (x>=mod) x-=mod;
    assert(x>=0 && x<mod);
}
void et(int x=-1) {
    printf("%d\n", x); exit(0);
}
ll fastPow(ll x, ll y, ll mod=MOD) {
    ll ans = 1;
    while(y>0) {
        if(y&1) ans = (x * ans)%mod;
        x = x*x%mod;
        y>>=1;
    }
    return ans;
}
ll gcd1(ll x, ll y) { return y?gcd1(y,x%y):x;}

bool rd(ll l, ll r) {
    cout<<l<<" "<<r<<endl;
    string x; cin>>x;
    if(x[0]=='Y') {
        if(l==r) exit(0);
        return 1;
    }
    if (x[0]=='B') exit(0);
    return 0;
}
void fmain(int ID) {
    cin>>ln>>k;
    ll l=1,r=ln;
    REP(i,5000){
        if (r-l+1<=50) {
            int len=r-l+1;
            int x = (rand() * 10000 + rand()) % len;
            int tar = l+x;
            rd(tar, tar);

            l=max(1LL,l-k);
            r=min(ln, r+k);
            continue;
        }
        ll mid=(l+r)/2;
        bool fg = rd(l, mid);
        if (fg) {
            r=mid;
        } else l=mid+1;
        l=max(1LL,l-k);
        r=min(ln, r+k);
    }
}

int main() {
    int t=1;
//    scanf("%d", &t);
    REQ(i,t) {
        fmain(i);
    }
    return 0;
}


#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <cmath>
#include <set>
#include <map>
#include <cstdio>
#include <stdlib.h>
#include <stack>
#include <numeric>
#include <bitset>
#include <cctype>
#include <list>
#include <assert.h>
#include <random>
#include <unordered_map>
#include <ctime>
typedef  long long ll;
using namespace std;
#define INF 2147483647
#define infL (1LL<<60)
#define inf (1<<30)
#define inf9 (1000000000)
#define MOD 1000000007
#define EPS 1e-9
#define Gr 9.8
#define PI acos(-1)
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define REQ(i,n) for(int (i)=1;(i)<=(int)(n);(i)++)
#define lch (rt<<1)
#define rch (rt<<1|1)
#define readmp(n) for(int i=0,u,v;i<n;i++) {scanf("%d%d",&u,&v); mp[u].push_back(v); mp[v].push_back(u);}
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef long double ld;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef ll ValType;
template<typename  T> void maxtt(T& t1, T t2) {
    t1=max(t1,t2);
}
template<typename  T> void mintt(T& t1, T t2) {
    t1=min(t1,t2);
}
#define MAX 105

bool debug = 0;
int n,m,k;
int dx[4] = {0,1,0,-1}, dy[4] = {1,0,-1,0};
string direc="RDLU";
ll ln, lk, lm;
void etp(bool f = 0) {
    puts(f ?"YES" : "NO");
    exit(0);
}
void addmod(int &x, int y, int mod = MOD) {
    assert(y>=0);
    x+=y; if (x>=mod) x-=mod;
    assert(x>=0 && x<mod);
}
void et(int x=-1) {
    printf("%d\n", x); exit(0);
}
ll fastPow(ll x, ll y, ll mod=MOD) {
    ll ans = 1;
    while(y>0) {
        if(y&1) ans = (x * ans)%mod;
        x = x*x%mod;
        y>>=1;
    }
    return ans;
}
ll gcd1(ll x, ll y) { return y?gcd1(y,x%y):x;}

bool rd(ll l, ll r) {
    cout<<l<<" "<<r<<endl;
    string x; cin>>x;
    if(x[0]=='Y') {
        if(l==r) exit(0);
        return 1;
    }
    if (x[0]=='B') exit(0);
    return 0;
}
void fmain(int ID) {
    cin>>ln>>k;
    ll l=1,r=ln;
    while (1) {
        if (r-l+1<=k*4+5) {
            int len=r-l+1;
            int x = (rand() * 10000 + rand()) % len;
            ll tar = l+x;
            rd(tar, tar);

            l=max(1LL,l-k);
            r=min(ln, r+k);
            continue;
        }
        ll mid=(l+r)/2;
        bool fg = rd(l, mid);
        if (fg) {
            r=mid;
        } else l=mid+1;
        l=max(1LL,l-k);
        r=min(ln, r+k);
    }
}

int main() {
    int t=1;
//    scanf("%d", &t);
    REQ(i,t) {
        fmain(i);
    }
    return 0;
}


#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <cmath>
#include <set>
#include <map>
#include <cstdio>
#include <stdlib.h>
#include <stack>
#include <numeric>
#include <bitset>
#include <cctype>
#include <list>
#include <assert.h>
#include <random>
#include <unordered_map>
#include <ctime>
typedef  long long ll;
using namespace std;
#define INF 2147483647
#define infL (1LL<<60)
#define inf (1<<30)
#define inf9 (1000000000)
#define MOD 1000000007
#define EPS 1e-9
#define Gr 9.8
#define PI acos(-1)
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define REQ(i,n) for(int (i)=1;(i)<=(int)(n);(i)++)
#define lch (rt<<1)
#define rch (rt<<1|1)
#define readmp(n) for(int i=0,u,v;i<n;i++) {scanf("%d%d",&u,&v); mp[u].push_back(v); mp[v].push_back(u);}
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef long double ld;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef ll ValType;
template<typename  T> void maxtt(T& t1, T t2) {
    t1=max(t1,t2);
}
template<typename  T> void mintt(T& t1, T t2) {
    t1=min(t1,t2);
}
#define MAX 105

bool debug = 0;
int n,m,k;
int dx[4] = {0,1,0,-1}, dy[4] = {1,0,-1,0};
string direc="RDLU";
ll ln, lk, lm;
void etp(bool f = 0) {
    puts(f ?"YES" : "NO");
    exit(0);
}
void addmod(int &x, int y, int mod = MOD) {
    assert(y>=0);
    x+=y; if (x>=mod) x-=mod;
    assert(x>=0 && x<mod);
}
void et(int x=-1) {
    printf("%d\n", x); exit(0);
}
ll fastPow(ll x, ll y, ll mod=MOD) {
    ll ans = 1;
    while(y>0) {
        if(y&1) ans = (x * ans)%mod;
        x = x*x%mod;
        y>>=1;
    }
    return ans;
}
ll gcd1(ll x, ll y) { return y?gcd1(y,x%y):x;}

bool rd(ll l, ll r) {
    cout<<l<<" "<<r<<endl;
    string x; cin>>x;
    if(x[0]=='Y') {
        if(l==r) exit(0);
        return 1;
    }
    if (x[0]=='B') exit(0);
    return 0;
}
void fmain(int ID) {
    cin>>ln>>k;
    ll l=1,r=ln;

    mt19937 RND((int)time(0));

    REP(i,4500){
        if (r-l+1<=50) {
            int x = uniform_int_distribution<int>(0, (int)(r - l))(RND);
            ll tar = l+x;
            rd(tar, tar);

            l=max(1LL,l-k);
            r=min(ln, r+k);
            continue;
        }
        ll mid=(l+r)/2;
        bool fg = rd(l, mid);
        if (fg) {
            r=mid;
        } else l=mid+1;
        l=max(1LL,l-k);
        r=min(ln, r+k);
    }
}

int main() {
    int t=1;
//    scanf("%d", &t);
    REQ(i,t) {
        fmain(i);
    }
    return 0;
}


#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <cmath>
#include <set>
#include <map>
#include <cstdio>
#include <stdlib.h>
#include <stack>
#include <numeric>
#include <bitset>
#include <cctype>
#include <list>
#include <assert.h>
#include <random>
#include <unordered_map>
#include <ctime>
typedef  long long ll;
using namespace std;
#define INF 2147483647
#define infL (1LL<<60)
#define inf (1<<30)
#define inf9 (1000000000)
#define MOD 1000000007
#define EPS 1e-9
#define Gr 9.8
#define PI acos(-1)
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define REQ(i,n) for(int (i)=1;(i)<=(int)(n);(i)++)
#define lch (rt<<1)
#define rch (rt<<1|1)
#define readmp(n) for(int i=0,u,v;i<n;i++) {scanf("%d%d",&u,&v); mp[u].push_back(v); mp[v].push_back(u);}
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef long double ld;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef ll ValType;
template<typename  T> void maxtt(T& t1, T t2) {
    t1=max(t1,t2);
}
template<typename  T> void mintt(T& t1, T t2) {
    t1=min(t1,t2);
}
#define MAX 105

bool debug = 0;
int n,m,k;
int dx[4] = {0,1,0,-1}, dy[4] = {1,0,-1,0};
string direc="RDLU";
ll ln, lk, lm;
void etp(bool f = 0) {
    puts(f ?"YES" : "NO");
    exit(0);
}
void addmod(int &x, int y, int mod = MOD) {
    assert(y>=0);
    x+=y; if (x>=mod) x-=mod;
    assert(x>=0 && x<mod);
}
void et(int x=-1) {
    printf("%d\n", x); exit(0);
}
ll fastPow(ll x, ll y, ll mod=MOD) {
    ll ans = 1;
    while(y>0) {
        if(y&1) ans = (x * ans)%mod;
        x = x*x%mod;
        y>>=1;
    }
    return ans;
}
ll gcd1(ll x, ll y) { return y?gcd1(y,x%y):x;}

bool rd(ll l, ll r) {
    cout<<l<<" "<<r<<endl;
    string x; cin>>x;
    if(x[0]=='Y') {
        if(l==r) exit(0);
        return 1;
    }
    return 0;
}
void fmain(int ID) {
    cin>>ln>>k;
    ll l=1,r=ln;
    while (1) {
        if (r-l+1<=k*4) {
            int len=r-l+1;
            int x = (rand() * 10000 + rand()) % len;
            int tar = l+x;
            rd(tar, tar);

            l=max(1LL,l-k);
            r=min(ln, r+k);
            continue;
        }
        ll mid=(l+r)/2;
        bool fg = rd(l, mid);
        if (fg) {
            r=mid;
        } else l=mid+1;
        l=max(1LL,l-k);
        r=min(ln, r+k);
    }
}

int main() {
    int t=1;
//    scanf("%d", &t);
    REQ(i,t) {
        fmain(i);
    }
    return 0;
}