// 模拟! #include <bits/stdc++.h> using namespace std; int main(){ int n,q,l,r,k,pos; cin >> n >> q; vector<int> a(n+1,0),c(n+1,0),col; int opt,mx; map<int,int> cnt; while(q--){ cin >> opt; if(opt == 1){ cin >> l >> r >> k; col.resize(k); for(int i = 0; i < k; ++i) cin >> col[i]; pos = 0; for(int i = l; i <= r; ++i){ int d = col[pos]; pos = (pos+1)%k; if(a[i] != d) ++c[i]; a[i] = d; } }else if(opt == 2){ cin >> pos; cout << c[pos] << " " << a[pos] << endl; }else { cin >> l >> r; cnt.clear(); for(int i = l; i <= r; ++i) cnt[a[i]] ++; mx = 0; for(auto x : cnt) mx = max(mx,x.second); cout << mx << endl; } } return 0; }