#include using namespace std; #define LL long long #define ULL unsigned long long LL a[10000000],n,k,i; struct q { LL MIN,MAX,OR,AND,cost; }tree[10000000]; void build(LL node,LL start,LL end) { if(start==end) tree[node].cost = 0,tree[node].OR = a[start],tree[node].AND = tree[node].MAX = tree[node].MIN = a[start]; else { LL mid = (start + end)/2; build(2*node,start,mid); build(2*node+1,mid+1,end); tree[node].OR = tree[2*node].OR | tree[2*node+1].OR; tree[node].AND = tree[2*node].AND & tree[2*node+1].AND; tree[node].MAX = max(tree[2*node].MAX,tree[2*node+1].MAX); tree[node].MIN = min(tree[2*node].MIN,tree[2*node+1].MIN); tree[node].cost = (tree[node].OR - tree[node].AND) - (tree[node].MAX - tree[node].MIN); } } void query(LL node,LL start,LL end,LL k) { if(start>end) return ; if(start==end and tree[node].cost=k) { cout<<"["; for(i=1;i=start and i<=end) cout<=start and n<=end) cout<>n>>k; for(i=1;i<=n;i++) cin>>a[i]; build(1,1,n); //cout<<"hello"<