#include<iostream>
#include<cstring>
using namespace std;
typedef unsigned long long ULL;
const int N = 100010,P = 131;
ULL h[N],p[N];//h[i]为哈希值,p[i]为P的i次方
char str[N];
ULL get(int l,int r){
return h[r] - h[l-1] * p[r-l+1];
}
int main(){
int n,m;
cin>>n>>m;
scanf("%s",str+1);
p[0] = 1;
for(int i = 1;i<=n;i++){
p[i] = p[i-1]*P;//预处理p数组,存储P的多少次方
h[i] = h[i-1] * P + str[i];
}
while(m--){
int l1,r1,l2,r2;
cin>>l1>>r1>>l2>>r2;
if(get(l1,r1) == get(l2,r2)) puts("Yes");
else puts("No");
}
return 0;
}