#include <bits/stdc++.h>
#pragma GCC optimize("Ofast", "unroll-loops")
using namespace std;
const int maxn = 1e5 + 5;
const int iinf = 1 << 29;
const long long inf = 1ll << 60;
const long long mod = 1e9 + 7;
void GG() {
  cout << "No\n";
  exit(0);
}
long long pow(long long a, long long n) {
  long long re = 1;
  while (n > 0) {
    if (n & 1) re = re * a % mod;
    a = a * a % mod;
    n >>= 1;
  }
  return re;
}
long long inv(long long b) {
  if (b == 1) return b;
  return (mod - mod / b) * inv(mod % b) % mod;
}
int n, k;
bool one(string second) {
  for (char ch = '0'; ch <= '1'; ch++) {
    int f1 = iinf, f2 = -1;
    for (int i = 0; i < (n); i++) {
      if (second[i] == ch) {
        f1 = i;
        break;
      }
    }
    for (int i = (n - 1); i >= 0; i--) {
      if (second[i] == ch) {
        f2 = i;
        break;
      }
    }
    if (f2 - f1 + 1 <= k) return true;
  }
  return 0;
}
bool two(string second) {
  vector<int> at[2];
  for (char ch = '0'; ch <= '1'; ch++) {
    for (int i = 0; i < (n); i++) {
      if (second[i] == ch) {
        at[ch - '0'].push_back(i);
      }
    }
  }
  for (int i = 0; i < (n - k + 1); i++) {
    for (char ch = '0'; ch <= '1'; ch++) {
      int x = ch - '0';
      int lx, rx;
      if (i > at[x ^ 1][0]) {
        lx = at[x ^ 1][0];
      } else {
        lx = *upper_bound(at[x ^ 1].begin(), at[x ^ 1].end(), i + k - 1);
      }
      if (i + k - 1 < at[x ^ 1].back()) {
        rx = at[x ^ 1].back();
      } else {
        rx = *prev(lower_bound(at[x ^ 1].begin(), at[x ^ 1].end(), i));
      }
      if (rx - lx + 1 > k) {
        return 0;
      }
    }
  }
  return 1;
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> k;
  string second;
  cin >> second;
  string FIRST = "tokitsukaze", SECOND = "quailty";
  if (one(second)) {
    cout << FIRST << endl;
    return 0;
  }
  if (two(second)) {
    cout << SECOND << endl;
    return 0;
  } else {
    cout << "once again" << endl;
    return 0;
  }
}
