#include <bits/stdc++.h>
using namespace std;
long long n;
int get_ans(long long a, long long b) {
  printf("%lld %lld\n", a, b);
  fflush(stdout);
  int ans;
  scanf("%d", &ans);
  return ans;
}
void srchL(long long minx, long long maxx, long long miny, long long maxy,
           long long mx, long long my);
void srchR(long long minx, long long maxx, long long miny, long long maxy,
           long long mx, long long my);
void srch_box(long long minx, long long maxx, long long miny, long long maxy) {
  long long X = maxx, Y = maxy;
  if (maxx - minx == 1 && maxy - miny == 1) {
    assert(get_ans(minx, miny) == 0);
    return;
  }
  long long mx = (minx + maxx) / 2;
  long long my = (miny + maxy) / 2;
  int ans = get_ans(mx, my);
  if (ans == 0) return;
  if (ans == 1) {
    minx = mx + 1;
    srch_box(minx, maxx, miny, maxy);
  } else if (ans == 2) {
    miny = my + 1;
    srch_box(minx, maxx, miny, maxy);
  } else {
    srchL(minx, maxx, miny, maxy, mx, my);
  }
}
void srchL(long long minx, long long maxx, long long miny, long long maxy,
           long long mx, long long my) {
  if (minx >= mx) {
    srch_box(minx, maxx, miny, my);
    return;
  }
  long long mid = (mx + minx) / 2;
  int ans = get_ans(mid, my);
  if (ans == 0) return;
  if (ans == 1) {
    srchR(mid + 1, maxx, miny, maxy, mx, my);
  } else if (ans == 2) {
    srch_box(minx, mx, my + 1, maxy);
  } else {
    srchR(minx, maxx, miny, maxy, mid, my);
  }
}
void srchR(long long minx, long long maxx, long long miny, long long maxy,
           long long mx, long long my) {
  if (miny >= my) {
    srch_box(minx, mx, miny, maxy);
    return;
  }
  long long mid = (my + miny) / 2;
  int ans = get_ans(mx, mid);
  if (ans == 0) return;
  if (ans == 1)
    srch_box(mx + 1, maxx, miny, my);
  else if (ans == 2)
    srchL(minx, maxx, mid + 1, maxy, mx, my);
  else
    srchL(minx, maxx, miny, maxy, mx, mid);
}
int main() {
  scanf("%lld", &n);
  srch_box(1, n + 1, 1, n + 1);
}
