#include <bits/stdc++.h>
const int N = 100010;
using namespace std;
namespace YKY {
inline int rnd() {
  int res = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    res = res * 10 + ch - '0';
    ch = getchar();
  }
  return res * f;
}
inline void wr(int x) {
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (x > 9) wr(x / 10);
  putchar(x % 10 + '0');
}
char s[N];
int n, m, k;
int Main() {
  n = rnd();
  m = rnd();
  k = rnd();
  scanf("%s", s + 1);
  m = m + k;
  for (int i = 1, opt, l, r, c; i <= m; i++) {
    opt = rnd();
    l = rnd();
    r = rnd();
    c = rnd();
    if (opt == 1)
      memset(s + l, c + '0', r - l + 1);
    else
      puts(memcmp(s + l, s + l + c, r - l - c + 1) ? "NO" : "YES");
  }
  return 0;
}
}  // namespace YKY
int main() { return YKY ::Main(); }
