#include <bits/stdc++.h>
using namespace std;
const int mod = 1004535809;
const int seed = 131;
const int MAXN = 100005;
long long p[MAXN], sp[MAXN];
int lazy[MAXN << 2];
int val[MAXN << 2];
int n, m, k;
void build(int o, int l, int r) {
  lazy[o] = 0;
  if (l == r) {
    scanf("%1d", &val[o]);
    val[o]++;
    return;
  }
  int m = ((l + r) >> 1);
  build((o << 1), l, m);
  build((o << 1 | 1), m + 1, r);
  val[o] = (val[(o << 1)] * p[r - m] % mod + val[(o << 1 | 1)]) % mod;
}
void down(int o, int l, int r) {
  int m = ((l + r) >> 1);
  if (lazy[o]) {
    lazy[(o << 1 | 1)] = lazy[(o << 1)] = lazy[o];
    val[(o << 1)] = lazy[o] * sp[m - l + 1] % mod;
    val[(o << 1 | 1)] = lazy[o] * sp[r - m] % mod;
    lazy[o] = 0;
  }
}
void update(int L, int R, int v, int o, int l, int r) {
  if (L <= l && r <= R) {
    lazy[o] = v;
    val[o] = v * sp[r - l + 1] % mod;
    return;
  }
  int m = ((l + r) >> 1);
  down(o, l, r);
  if (L <= m) update(L, R, v, (o << 1), l, m);
  if (m < R) update(L, R, v, (o << 1 | 1), m + 1, r);
  val[o] = (val[(o << 1)] * p[r - m] % mod + val[(o << 1 | 1)]) % mod;
}
int query(int L, int R, int o, int l, int r) {
  if (L <= l && r <= R) return val[o];
  int m = ((l + r) >> 1);
  down(o, l, r);
  if (R <= m) return query(L, R, (o << 1), l, m);
  if (m < L) return query(L, R, (o << 1 | 1), m + 1, r);
  return (query(L, R, (o << 1), l, m) * p[min(R, r) - m] % mod +
          query(L, R, (o << 1 | 1), m + 1, r)) %
         mod;
}
void solve() {
  int op, l, r, v, q = m + k;
  build(1, 1, n);
  while (q--) {
    scanf("%d%d%d%d", &op, &l, &r, &v);
    if (op == 1)
      update(l, r, v + 1, 1, 1, n);
    else
      printf("%s\n", (v == r - l + 1 ||
                      query(l, r - v, 1, 1, n) == query(l + v, r, 1, 1, n))
                         ? "YES"
                         : "NO");
  }
}
void preprocess() {
  p[0] = 1;
  sp[0] = 0;
  for (int i = 1; i < MAXN; ++i) {
    p[i] = p[i - 1] * seed % mod;
    sp[i] = (sp[i - 1] + p[i - 1]) % mod;
  }
}
int main() {
  preprocess();
  while (~scanf("%d%d%d", &n, &m, &k)) solve();
  return 0;
}
