#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5;
char a[maxn];
int n, m;
inline long long rd() {
  register int x = 0;
  register char ch = getchar();
  while (ch < '0' || ch > '9') ch = getchar();
  while (ch >= '0' && ch <= '9') {
    x = (x << 3) + (x << 1) + (ch ^ 48);
    ch = getchar();
  }
  return x;
}
int main() {
  int k;
  n = rd(), m = rd(), k = rd();
  m += k;
  scanf("%s", a + 1);
  for (int i = 1, op, l, r, x; i <= m; ++i) {
    op = rd(), l = rd(), r = rd(), x = rd();
    if (op == 1)
      memset(a + l, x + '0', (unsigned int)(r - l + 1));
    else {
      if (memcmp(a + l, a + l + x, (unsigned int)(r - l - x + 1)) == 0)
        printf("YES\n");
      else
        printf("NO\n");
    }
  }
  return 0;
}
