#include <bits/stdc++.h>
using namespace std;
inline void readI(int *i) {
  register int t = 0;
  register char z = getchar();
  int znak = 1;
  if (z == '-') {
    znak = -1;
  }
  while ((z < '0') || ('9' < z)) {
    z = getchar();
    if (z == '-') {
      znak = -1;
    }
  }
  while (('0' <= z) && (z <= '9')) {
    t = (t << 3) + (t << 1) + z - '0';
    z = getchar();
  }
  *i = (t * znak);
}
inline void readUI(int *i) {
  register int t = 0;
  register char z = getchar();
  while ((z < '0') || ('9' < z)) {
    z = getchar();
  }
  while (('0' <= z) && (z <= '9')) {
    t = (t << 3) + (t << 1) + z - '0';
    z = getchar();
  }
  *i = t;
}
inline void readL(long long int *l) {
  register long long int t = 0;
  register char z = getchar();
  int znak = 1;
  if (z == '-') {
    znak *= -1;
  }
  while ((z < '0') || ('9' < z)) {
    z = getchar();
    if (z == '-') {
      znak = -1;
    }
  }
  while (('0' <= z) && (z <= '9')) {
    t = (t << 3) + (t << 1) + z - '0';
    z = getchar();
  }
  *l = (t * znak);
}
inline void readUL(long long int *l) {
  register long long int t = 0;
  register char z = getchar();
  while ((z < '0') || ('9' < z)) {
    z = getchar();
  }
  while (('0' <= z) && (z <= '9')) {
    t = (t << 3) + (t << 1) + z - '0';
    z = getchar();
  }
  *l = t;
}
inline void writeL(long long int l) {
  if (l == 0) {
    putchar(48);
  } else {
    if (l < 0) {
      l *= -1;
      putchar(45);
    }
    int _tab[21];
    int wsk = 0;
    while (l > 0) {
      ++wsk;
      _tab[wsk] = (l % 10) + 48;
      l /= 10;
    }
    for (int j = wsk; j >= 1; --j) {
      putchar(_tab[j]);
    }
  }
}
inline void writeS(string s) {
  int l = s.length();
  for (int i = 0; i < l; ++i) {
    putchar(s[i]);
  }
}
int n, k, x, y;
bool pytaj(int a, int b) {
  fprintf(stdout, "1 %d %d\n", a, b);
  fflush(stdout);
  string s;
  cin >> s;
  return s[0] == 'T';
}
int bns(int pp, int pk) {
  if (pk < pp) {
    return -1;
  }
  if (pp == pk) {
    return pp;
  }
  int roz = ((pk - pp + 1) >> 2);
  bool gg = pytaj(pp + roz, pk - roz);
  if (gg) {
    return bns(pp, (pk + pp) >> 1);
  } else {
    return bns((pk + pp + 2) >> 1, pk);
  }
}
bool istnieje(int x) {
  if (x - 1 >= 1 && !pytaj(x, x - 1)) return 0;
  if (x + 1 <= n && !pytaj(x, x + 1)) return 0;
  return 1;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  x = bns(1, n);
  y = bns(1, x - 1);
  if (y == -1 || !istnieje(y)) {
    y = bns(x + 1, n);
  }
  fprintf(stdout, "2 %d %d\n", x, y);
  fflush(stdout);
  return 0;
}
