#include<bits/stdc++.h>
#include "floppy.h"
using namespace std;
#define ll long long
#define fi first
#define se second
#define ldb long double
#define pii pair<int, int>
#define bend(v) v.begin(), v.end()
const int N = 2e5 + 5, M = 1e6 + 5;
const int mod = 1e9 + 7;
const int base = 311;
const int inf = INT_MAX;
const ll INF = LLONG_MAX;
void read_array(int subtask_id , const vector<int> &v){
vector<int> st;
string s = "";
for(int x : v){
while(!st.empty() && st.back() <= x) st.pop_back(), s += "0";
st.push_back(x); s += "1";
}
save_to_floppy(s);
}
vector<int> solve_queries(int subtask_id, int n, const string& bit, const vector<int>& a, const vector<int>& b){
int q = (int)a.size();
vector<int> ans(q);
vector<vector<pii>> qu(q);
for(int i = 0; i < q; i++) qu[b[i]].push_back({a[i], i});
int j = 0, k = (int)bit.size();
vector<int> st;
for(int i = 0; i < n; i++){
while(j < k && bit[j] == '0') st.pop_back(), j++;
st.push_back(i); j++;
for(auto [l, id] : qu[i]) ans[id] = *lower_bound(bend(st), l);
}
return ans;
}