#include <bits/stdc++.h>
using namespace std;
void Main();
int main() {
  ios::sync_with_stdio(0);
  while (~cin.peek()) Main(), cin.get();
  return 0;
}
void updmin(int &a, int b) {
  if (b < a) a = b;
}
void updmax(int &a, int b) {
  if (b > a) a = b;
}
void Main() {
  int n, k;
  string s;
  cin >> n >> k >> s;
  vector<vector<int>> pos(2);
  for (int i = 0; i < n; i++) {
    pos[s[i] - '0'].push_back(i);
  }
  for (int i = 0; i < 2; i++) {
    if (pos[i].size() == 0 || pos[i][pos[i].size() - 1] - pos[i][0] + 1 <= k) {
      cout << "tokitsukaze" << endl;
      return;
    }
  }
  bool find = 0;
  for (int i = 0; i + k - 1 < n; i++) {
    for (int j = 0; j < 2; j++) {
      int left_j = pos[j][0], right_j = pos[j][pos[j].size() - 1];
      updmin(left_j, i);
      updmax(right_j, i + k - 1);
      int left_p_nj = 0, right_p_nj = pos[!j].size() - 1;
      if (pos[!j][left_p_nj] >= i && pos[!j][left_p_nj] < i + k)
        left_p_nj = lower_bound(pos[!j].begin(), pos[!j].end(), i + k) -
                    pos[!j].begin();
      if (pos[!j][right_p_nj] >= i && pos[!j][right_p_nj] < i + k)
        right_p_nj = lower_bound(pos[!j].begin(), pos[!j].end(), i) -
                     pos[!j].begin() - 1;
      int left_nj = pos[!j][left_p_nj], right_nj = pos[!j][right_p_nj];
      if (right_j - left_j + 1 > k && right_nj - left_nj + 1 > k) {
        find = 1;
        goto out;
      }
    }
  }
out:
  if (find)
    cout << "once again" << endl;
  else
    cout << "quailty" << endl;
}
