#include <bits/stdc++.h>
#pragma GCC target("sse,sse2,sse3,ssse3,sse4")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
using namespace std;
mt19937_64 mt_rand(chrono::system_clock::now().time_since_epoch().count());
template <typename T1, typename T2>
inline bool upmax(T1& a, T2 b) {
  return (a < b ? (a = b, true) : false);
}
template <typename T1, typename T2>
inline bool upmin(T1& a, T2 b) {
  return (b < a ? (a = b, true) : false);
}
const int maxn = (int)2000 + 20;
const int maxlog = 21;
const int base = (int)1e9 + 7;
const long double eps = (long double)1e-7;
const long double PI = acos(-1.);
const int pp = 41;
int n;
vector<int> g[2];
int le = 0;
int ri = (int)1e9;
int GetAsk(int x, int y) {
  cout << x << " " << y << endl;
  cout.flush();
  string s;
  cin >> s;
  return s == "black";
}
int main() {
  g[0].push_back(0);
  cin >> n;
  int leftFl = GetAsk(0, 1);
  int rightFl = leftFl ^ 1;
  for (int i = 1; i < n; i++) {
    int m = (le + ri) >> 1;
    int cur = GetAsk(m, 1);
    int cnt = leftFl;
    if (cur) cnt ^= 1;
    g[cnt].push_back(m);
    if (!cnt)
      le = m + 1;
    else
      ri = m;
  }
  for (int i = 0; i < 2; i++) {
    sort((g[i]).begin(), (g[i]).end());
  }
  if (g[0].empty() || g[1].empty()) {
    cout << "0 0 1 0" << endl;
  } else
    cout << g[0].back() << " " << 2 << " " << g[1].front() << " " << 0 << endl;
  cout.flush();
  return 0;
}
