#include #include #include #include #include using namespace std; const int TT = 1024*1024; int T, tree[TT*2]; int n, key[TT]; int queries, beg[TT], end[TT], res[TT]; vector v[TT]; void init() { T = 1; while (T<(n+1)) T*=2; for(int i=0;i<2*T;i++) tree[i] = 0; } void insert(int a, int val) { a += T; tree[a] = val; while(a>1) { a/=2; tree[a] = max(tree[2*a], tree[2*a+1]); } } int rmq(int l, int r) { l+=T; r+=T; int result = max(tree[l], tree[r]); while(l/2 != r/2) { if (l%2==0) result = max(result, tree[l+1]); if (r%2==1) result = max(result, tree[r-1]); l/=2; r/=2; } return result; } void scase() { scanf("%d%d",&n,&queries); if ((n==0) && (queries==0)) exit(0); for(int i=1;i<=n;i++) scanf("%d",&key[i]); map prev; for(int i=0;i