#include <bits/stdc++.h>
using namespace std;
const long long maxn = 1e5 + 20, p = 37, mod = 1e9 + 143;
long long N, M, K, seg[4 * maxn], lazy[4 * maxn], pw[maxn], pre[maxn];
char ar[maxn];
long long build(long long k, long long b, long long s) {
  if (s == b) return seg[k] = ar[s];
  long long m = (s + b) >> 1;
  long long l = build(2 * k, b, m), r = build(2 * k + 1, m + 1, s);
  return seg[k] = (l + (r * pw[m - b + 1]) % mod) % mod;
}
void push(long long k, long long b, long long s) {
  if (lazy[k] != -1) {
    long long m = (s + b) >> 1;
    lazy[2 * k] = lazy[k];
    lazy[2 * k + 1] = lazy[k];
    seg[2 * k] = (pre[m - b] * lazy[k]) % mod;
    seg[2 * k + 1] = (pre[s - m - 1] * lazy[k]) % mod;
    lazy[k] = -1;
  }
}
long long upd(long long k, long long b, long long s, long long x, long long y,
              long long z) {
  if (s < x || b > y || y < x) return seg[k];
  if (x <= b && s <= y) {
    lazy[k] = z;
    return seg[k] = (pre[s - b] * z) % mod;
  }
  long long m = (s + b) >> 1;
  push(k, b, s);
  long long l = upd(2 * k, b, m, x, y, z);
  long long r = upd(2 * k + 1, m + 1, s, x, y, z);
  return seg[k] = (l + (r * pw[m - b + 1]) % mod) % mod;
}
long long find(long long k, long long b, long long s, long long x,
               long long y) {
  if (s < x || b > y || y < x) return 0;
  if (x <= b && s <= y) {
    return (seg[k] * pw[b - x]) % mod;
  }
  long long m = (s + b) >> 1;
  push(k, b, s);
  long long l = find(2 * k, b, m, x, y), r = find(2 * k + 1, m + 1, s, x, y);
  return (l + r) % mod;
}
int main() {
  memset(lazy, -1, sizeof lazy);
  scanf("%lld %lld %lld", &N, &M, &K);
  pw[0] = pre[0] = 1;
  for (long long i = 1; i <= N; i++)
    scanf(" %c", &ar[i]), ar[i] -= '0', pw[i] = (pw[i - 1] * p) % mod,
                                        pre[i] = (pre[i - 1] + pw[i]) % mod;
  build(1, 1, N);
  for (long long i = 1; i <= M + K; i++) {
    long long komut, a, b, c;
    scanf("%lld %lld %lld %lld", &komut, &a, &b, &c);
    if (komut == 1)
      upd(1, 1, N, a, b, c);
    else {
      if (find(1, 1, N, a, b - c) == find(1, 1, N, a + c, b))
        printf("YES\n");
      else
        printf("NO\n");
    }
  }
  return 0;
}
