#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
vector<int> segTree;
vector<int> arr;
void build(int p, int l, int r) {
if (l == r) {
segTree[p] = arr[l];
return;
}
int mid = (l + r) >> 1;
build(p << 1, l, mid);
build(p << 1 | 1, mid + 1, r);
segTree[p] = min(segTree[p << 1], segTree[p << 1 | 1]);
}
int query(int p, int l, int r, int ql, int qr) {
if (qr < l || ql > r) return INT_MAX;
if (ql <= l && r <= qr) return segTree[p];
int mid = (l + r) >> 1;
return min(
query(p << 1, l, mid, ql, qr),
query(p << 1 | 1, mid + 1, r, ql, qr)
);
}
void update(int p, int l, int r, int pos, int val) {
if (l == r) {
segTree[p] = val;
return;
}
int mid = (l + r) >> 1;
if (pos <= mid) update(p << 1, l, mid, pos, val);
else update(p << 1 | 1, mid + 1, r, pos, val);
segTree[p] = min(segTree[p << 1], segTree[p << 1 | 1]);
}
void solve(vector<int>& input) {
arr = input;
int n = arr.size();
segTree.assign(4 * n, 0);
build(1, 0, n - 1);
}
};