#include <bits/stdc++.h>
using namespace std;
const long long BASE = 1009;
const long long MOD = 1e9 + 7;
void cal(string &str, vector<vector<int>> &query) {
  int n = str.size();
  vector<long long> base(n + 1, 0);
  vector<vector<long long>> hash(n + 1, vector<long long>(26, 0));
  base[0] = 1;
  for (int i = 1; i <= n; i += 1) base[i] = (base[i - 1] * BASE) % MOD;
  for (int i = 0; i < n; i += 1) {
    for (int j = 0; j < 26; j += 1) {
      int add = (str[i] - 'a' == j) ? 1 : 0;
      hash[i + 1][j] = (hash[i][j] * BASE + add) % MOD;
    }
  }
  int m = query.size();
  for (int i = 0; i < m; i += 1) {
    int s1 = query[i][0];
    int s2 = query[i][1];
    int len = query[i][2];
    vector<int> h1(26, 0);
    vector<int> h2(26, 0);
    for (int j = 0; j < 26; j += 1) {
      h1[j] =
          ((hash[s1 + len - 1][j] - hash[s1 - 1][j] * base[len]) % MOD + MOD) %
          MOD;
      h2[j] =
          ((hash[s2 + len - 1][j] - hash[s2 - 1][j] * base[len]) % MOD + MOD) %
          MOD;
    }
    sort(h1.begin(), h1.end());
    sort(h2.begin(), h2.end());
    bool same = true;
    for (int i = 0; i < 26 && same; i += 1) {
      if (h1[i] != h2[i]) {
        same = false;
      }
    }
    if (same)
      cout << "YES" << endl;
    else
      cout << "NO" << endl;
  }
}
int main() {
  int n, m;
  cin >> n >> m;
  string str;
  vector<vector<int>> query(m, vector<int>(3));
  cin >> str;
  for (int i = 0; i < m; i += 1) {
    for (int j = 0; j < 3; j += 1) {
      cin >> query[i][j];
    }
  }
  cal(str, query);
}
