publiclong query(int l, int r) {
long res = UNIQUE;
for (l += N, r += N; l < r; l >>= 1, r >>= 1) {
if ((l&1) != 0) res = function(res, tree[l++]);
if ((r&1) != 0) res = function(res, tree[--r]);
}
return res;
}
publicvoid modify(int i, long value) {
tree[i + N] = function(tree[i+N], value);
for (i += N; i > 1; i >>= 1) {
tree[i>>1] = function(tree[i], tree[i^1]);
}
}