#include <bits/stdc++.h>
using namespace std;
int n, k;
int A[100];
string ch1, ch2, ch;
void check(int opt, int S1, int S2) {
  cout << opt << " " << S1 << " " << S2 << endl;
  fflush(stdout);
  cin >> ch;
}
int Find(int L, int R) {
  int mid1, mid2, mid;
  while (L + 2 < R) {
    mid = (L + R) >> 1;
    mid1 = mid;
    mid2 = mid + 1;
    check(1, mid1, mid2);
    if (ch == "TAK") {
      R = mid2;
    } else {
      L = mid1;
    }
  }
  if (L + 1 == R) {
    check(1, L, R);
    if (ch == "TAK")
      return L;
    else
      return R;
  }
  if (L + 2 == R) {
    mid1 = (L + R) / 2;
    check(1, L, R);
    if (ch == "TAK") {
      check(1, L, mid1);
      if (ch == "TAK")
        return L;
      else
        return mid1;
    } else {
      return R;
    }
  }
}
int main() {
  cin >> n >> k;
  if (n == 2) {
    cout << "2 1 2" << endl;
    return 0;
  }
  int M1 = Find(1, n), M2 = -1, M3 = -1;
  if (M1 != 1) M2 = Find(1, M1 - 1);
  if (M1 != n) M3 = Find(M1 + 1, n);
  if (M2 == -1 || M2 > n) {
    if (M1 > M3) swap(M1, M3);
    cout << 2 << " " << M1 << " " << M3 << endl;
    return 0;
  }
  if (M3 == -1 || M3 > n) {
    if (M1 > M2) swap(M1, M2);
    cout << 2 << " " << M1 << " " << M2 << endl;
    return 0;
  }
  if (M1 > M2) swap(M1, M2);
  if (M1 > M3) swap(M1, M3);
  if (M2 > M3) swap(M3, M2);
  check(1, M1, M2);
  if (ch == "TAK") {
    check(1, M2, M3);
    if (ch == "TAK")
      cout << 2 << " " << M1 << " " << M2 << endl;
    else
      cout << 2 << " " << M1 << " " << M3 << endl;
  } else {
    cout << 2 << " " << M2 << " " << M3 << endl;
  }
}
