#include <bits/stdc++.h>   #pragma GCC optimize(3)   using namespace std;   const double PI = acos(-1.0);   const double eps = 1e-6;   const int INF = 0x3f3f3f3f;   const long long SEED = 19260817;   const long long MOD = 1e9 + 9;   const int maxn = 2e5 + 11;   int N, M, T;   char a[maxn];   long long cnt[maxn][26], dif[maxn], cx[maxn], cy[maxn];   void solve(int x, int y, int l) {     for (int i = 0; i < 26; i++) {       cx[i] = (cnt[x + l - 1][i] - cnt[x - 1][i] * dif[l] % MOD + MOD) % MOD;       cy[i] = (cnt[y + l - 1][i] - cnt[y - 1][i] * dif[l] % MOD + MOD) % MOD;     }     sort(cx, cx + 26);     sort(cy, cy + 26);     for (int i = 0; i < 26; i++)       if (cx[i] != cy[i]) {         puts( NO );         return;       }     puts( YES );     return;   }   int main() {     cin >> N >> M;     scanf( %s , a + 1);     dif[0] = 1;     for (int i = 1; i <= N; i++) {       dif[i] = (dif[i - 1] * SEED) % MOD;       for (int j = 0; j < 26; j++) cnt[i][j] = cnt[i - 1][j] * SEED % MOD;       cnt[i][a[i] -  a ] = (cnt[i][a[i] -  a ] + 1) % MOD;     }     while (M--) {       int x, y, l;       scanf( %d%d%d , &x, &y, &l);       solve(x, y, l);     }     return 0;   }   