#if defined(_USE_PCH_)
#include "pch.hpp"
#else
#include <bits/stdc++.h>
#endif
#define RNG(V_, A_, B_, ...) for(int V_=(A_), V_##_END=(B_) __VA_OPT__(,) __VA_ARGS__; V_<=V_##_END; V_++)
#define IRNG(V_, A_, B_, ...) for(int V_=(A_), V_##_END=(B_) __VA_OPT__(,) __VA_ARGS__; V_>=V_##_END; V_--)
#ifdef _WIN32
#define long int64_t
#endif
#define fir first
#define sec second
#define _UN using namespace
using namespace std;
typedef pair<int,int> pii;
typedef __int128 i128;

const int MAXN=1e5+10;
int n,m,qn,A[MAXN],div_[MAXN],ndiv,adiv[MAXN];
int C[240];

void case_main(){
    cin>>n>>m>>qn;
    RNG(i,1,n) cin>>A[i];
    ndiv=0; fill_n(adiv+1,m,0);
    RNG(i,1,m){
        if(m%i==0) div_[++ndiv]=i,adiv[i]=ndiv;
    }
    fill_n(C+1,ndiv,0);
    RNG(k,1,ndiv){
        RNG(i,2,n) C[k] += (A[i]%div_[k]) < (A[i-1]%div_[k]);
    }
    RNG(_,1,qn){
        int op; cin>>op;
        if(op==1){
            int i,x; cin>>i>>x;
            RNG(k,1,ndiv){
                if(i>1) C[k] += ((x%div_[k])      < (A[i-1]%div_[k])) - ((A[i]%div_[k])   < (A[i-1]%div_[k]));
                if(i<n) C[k] += ((A[i+1]%div_[k]) < (x%div_[k])     ) - ((A[i+1]%div_[k]) < (A[i]%div_[k])  );
            }
            A[i]=x;
        }else{
            int k; cin>>k;
            k=__gcd(k,m);
            if(C[adiv[k]]<=m/k) cout<<"Yes\n";
            else cout<<"No\n";
        }
    }
}

int main(){
#if defined(_LOCAL_)
    freopen("in","r",stdin);
//  freopen("out","w",stdout);
//  freopen("/dev/null","w",stderr);
#else
//  freopen("reason.in","r",stdin);
//  freopen("reason.out","w",stdout);
#endif
    ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
    int cas; cin>>cas;
    RNG(_,1,cas) case_main();
}