/*
author: kartik8800
*/
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define fr(a,b) for(int i = a; i < b; i++)
#define rep(i,a,b) for(int i = a; i < b; i++)
#define mod 1000000007
#define inf (1LL<<60)
#define all(x) (x).begin(), (x).end()
#define prDouble(x) cout << fixed << setprecision(10) << x
#define triplet pair<ll,pair<ll,ll>>
#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL)
using namespace std;
#define left(i) (2*i + 1)
#define right(i) (2*i + 2)
#define parent(i) ((i-1)/2)
#include <vector>
template<class T>
class SegmentTree
{
public:
//tree constructors.
SegmentTree(std::vector<T> data, T value, T (*combine)(T obj1, T obj2));
SegmentTree(T ar[], int n, T value, T (*combine)(T obj1, T obj2));
//query the range l to r, 0 based array indexing.
T query(int l, int r);
//update the element at index idx to val.
void update(int idx, T val);
///TODO lazy propagation
private:
//represents the segment tree.
T *tree;
//builds the segment tree.
void buildTree(std::vector<T> data);
//size of the segment tree array.
int segTreeSize;
//extra nodes must be added to array to make its size a power of 2
//this is the value to be filled for the those nodes.
T valueForExtraNodes;
//specifies how to combine child node results to form parent node result.
T (*combine)(T obj1, T obj2);
//used to calculate the size of array needed to store the tree.
int calculateSize(int n);
//helps to solve a range query.
T queryHelper(int l,int r, int st, int ed, int node);
};
template<class T> SegmentTree<T>::SegmentTree(std::vector<T> data,
T value, T (*combine)(T obj1, T obj2))
{
this->combine = combine;
valueForExtraNodes = value;
segTreeSize = calculateSize(data.size());
buildTree(data);
}
template<class T> SegmentTree<T>::SegmentTree(T ar[], int n,
T value, T (*combine)(T obj1, T obj2))
{
this->combine = combine;
valueForExtraNodes = value;
segTreeSize = calculateSize(n);
std::vector<T> data;
for(int i = 0; i < n; i++)
data.push_back(ar[i]);
buildTree(data);
}
template<class T> int SegmentTree<T>::calculateSize(int n)
{
int pow2 = 1;
while( pow2 < n)
{
pow2 = pow2 << 1;
}
return 2*pow2 - 1;
}
template<class T> T SegmentTree<T>::query(int l, int r)
{
int st = 0, ed = segTreeSize/2;
return queryHelper(l, r, st, ed, 0);
}
template<class T> T SegmentTree<T>::queryHelper(int l,int r, int st, int ed, int node)
{
if( (r < st) || (l > ed) || (l > r) )
return valueForExtraNodes;
if(st >= l && ed <= r)
return tree[node];
T leftVal = queryHelper(l, r, st, (st + ed)/2, left(node));
T rightVal = queryHelper(l, r, (st+ed)/2 + 1, ed, right(node));
return combine(leftVal, rightVal);
}
template<class T> void SegmentTree<T>::buildTree(std::vector<T> data)
{
int n = data.size();
tree = new T[segTreeSize];
int extraNodes = (segTreeSize/2 + 1) - n;
for(int i = segTreeSize - 1; i >= 0; i--)
{
if(extraNodes>0)
{
tree[i] = valueForExtraNodes;
extraNodes--;
}
else if(n>0)
{
tree[i] = data[n-1];
n--;
}
else
tree[i] = combine(tree[left(i)], tree[right(i)]);
}
}
template<class T> void SegmentTree<T>::update(int idx, T val)
{
int segTreeIdx = (segTreeSize/2) + idx;
tree[segTreeIdx] = val;
while(parent(segTreeIdx) >= 0)
{
segTreeIdx = parent(segTreeIdx);
if(right(segTreeIdx) < segTreeSize)
tree[segTreeIdx] = combine(tree[left(segTreeIdx)], tree[right(segTreeIdx)]);
if(segTreeIdx == 0)
break;
}
}
int large(int x, int y){return max(x,y);}
SegmentTree < int > rangeMaxQueries(vector<int>(),0,large);
int RMQ(int L, int R)
{
if(L>R)return 0;
return rangeMaxQueries.query(L,R);
}
void whatsWithThisOPFormat(){
static int tno = 1;
cout << "Case #" <<tno++ <<": ";
}
int solve(vector<int>& v, int strt, int k)
{
if(k == 1)return strt;
// binary search left region
int lo = 1, hi = strt - 1;
while(lo <= hi){
int mid = (lo+hi)/2;
int rightRoom = k + mid - 1;
if(rightRoom < strt)
lo = mid + 1;
else if(rightRoom > (int)v.size() - 1)
hi = mid -1;
else{
bool reachRight1st = (RMQ(mid, strt - 1) > RMQ(strt, rightRoom - 1)) ? 1 : 0;
bool reachMid = (RMQ(mid, strt - 1) < RMQ(strt, rightRoom)) ? 1 : 0;
if(reachMid && reachRight1st)
return mid;
else if(reachMid)
hi = mid - 1;
else lo = mid + 1;
}
}
// binary search right region
lo = strt+1, hi = (int)v.size() - 1;
while(lo <= hi){
int mid = (lo+hi)/2;
int leftRoom = mid - k + 1;
if(leftRoom > strt)
hi = mid - 1;
else if(leftRoom <= 0)
lo = mid+1;
else{
bool reachLeft1st = (RMQ(leftRoom, strt - 1) < RMQ(strt, mid - 1)) ? 1 : 0;
bool reachMid = (RMQ(leftRoom - 1, strt - 1) > RMQ(strt, mid - 1)) ? 1 : 0;
if(reachMid && reachLeft1st)
return mid;
else if(reachMid)
lo = mid + 1;
else hi = mid - 1;
}
}
return -1;
}
int main() {
fast_io;
ll t,n,m,x,i,j,k,q;
cin >> t;
//t = 1;
while(t--)
{
cin >> n >> q;
vector<int> difficulty(n+1);
fr(1,n)
cin >> difficulty[i];
difficulty[0] = difficulty[n] = 1e9;
rangeMaxQueries = SegmentTree<int>(difficulty,0,large);
vector<int> ans;
while(q--){
int strt, k;
cin >> strt >> k;
ans.push_back(solve(difficulty, strt, k));
}
whatsWithThisOPFormat();
for(int x : ans)cout << x <<' ';
cout << '\n';
}
return 0;
}
LyoKICAgIGF1dGhvcjoga2FydGlrODgwMAoqLwoKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmcihhLGIpIGZvcihpbnQgaSA9IGE7IGkgPCBiOyBpKyspCiNkZWZpbmUgcmVwKGksYSxiKSBmb3IoaW50IGkgPSBhOyBpIDwgYjsgaSsrKQojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CiNkZWZpbmUgaW5mICgxTEw8PDYwKQojZGVmaW5lIGFsbCh4KSAoeCkuYmVnaW4oKSwgKHgpLmVuZCgpCiNkZWZpbmUgcHJEb3VibGUoeCkgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMTApIDw8IHgKI2RlZmluZSB0cmlwbGV0IHBhaXI8bGwscGFpcjxsbCxsbD4+CiNkZWZpbmUgZmFzdF9pbyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKE5VTEwpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGVmdChpKSAoMippICsgMSkKI2RlZmluZSByaWdodChpKSAoMippICsgMikKI2RlZmluZSBwYXJlbnQoaSkgKChpLTEpLzIpCiNpbmNsdWRlIDx2ZWN0b3I+Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBTZWdtZW50VHJlZQp7CiAgICBwdWJsaWM6CiAgICAgICAgLy90cmVlIGNvbnN0cnVjdG9ycy4KICAgICAgICBTZWdtZW50VHJlZShzdGQ6OnZlY3RvcjxUPiBkYXRhLCBUIHZhbHVlLCBUICgqY29tYmluZSkoVCBvYmoxLCBUIG9iajIpKTsKICAgICAgICBTZWdtZW50VHJlZShUIGFyW10sIGludCBuLCBUIHZhbHVlLCBUICgqY29tYmluZSkoVCBvYmoxLCBUIG9iajIpKTsKCiAgICAgICAgLy9xdWVyeSB0aGUgcmFuZ2UgbCB0byByLCAwIGJhc2VkIGFycmF5IGluZGV4aW5nLgogICAgICAgIFQgcXVlcnkoaW50IGwsIGludCByKTsKCiAgICAgICAgLy91cGRhdGUgdGhlIGVsZW1lbnQgYXQgaW5kZXggaWR4IHRvIHZhbC4KICAgICAgICB2b2lkIHVwZGF0ZShpbnQgaWR4LCBUIHZhbCk7CiAgICAgICAgLy8vVE9ETyBsYXp5IHByb3BhZ2F0aW9uCiAgICBwcml2YXRlOgogICAgICAgIC8vcmVwcmVzZW50cyB0aGUgc2VnbWVudCB0cmVlLgogICAgICAgIFQgKnRyZWU7CgogICAgICAgIC8vYnVpbGRzIHRoZSBzZWdtZW50IHRyZWUuCiAgICAgICAgdm9pZCBidWlsZFRyZWUoc3RkOjp2ZWN0b3I8VD4gZGF0YSk7CgogICAgICAgIC8vc2l6ZSBvZiB0aGUgc2VnbWVudCB0cmVlIGFycmF5LgogICAgICAgIGludCBzZWdUcmVlU2l6ZTsKCiAgICAgICAgLy9leHRyYSBub2RlcyBtdXN0IGJlIGFkZGVkIHRvIGFycmF5IHRvIG1ha2UgaXRzIHNpemUgYSBwb3dlciBvZiAyCiAgICAgICAgLy90aGlzIGlzIHRoZSB2YWx1ZSB0byBiZSBmaWxsZWQgZm9yIHRoZSB0aG9zZSBub2Rlcy4KICAgICAgICBUIHZhbHVlRm9yRXh0cmFOb2RlczsKCiAgICAgICAgLy9zcGVjaWZpZXMgaG93IHRvIGNvbWJpbmUgY2hpbGQgbm9kZSByZXN1bHRzIHRvIGZvcm0gcGFyZW50IG5vZGUgcmVzdWx0LgogICAgICAgIFQgKCpjb21iaW5lKShUIG9iajEsIFQgb2JqMik7CgogICAgICAgIC8vdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNpemUgb2YgYXJyYXkgbmVlZGVkIHRvIHN0b3JlIHRoZSB0cmVlLgogICAgICAgIGludCBjYWxjdWxhdGVTaXplKGludCBuKTsKCiAgICAgICAgLy9oZWxwcyB0byBzb2x2ZSBhIHJhbmdlIHF1ZXJ5LgogICAgICAgIFQgcXVlcnlIZWxwZXIoaW50IGwsaW50IHIsIGludCBzdCwgaW50IGVkLCBpbnQgbm9kZSk7Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBTZWdtZW50VHJlZTxUPjo6U2VnbWVudFRyZWUoc3RkOjp2ZWN0b3I8VD4gZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCB2YWx1ZSwgVCAoKmNvbWJpbmUpKFQgb2JqMSwgVCBvYmoyKSkKewogICB0aGlzLT5jb21iaW5lID0gY29tYmluZTsKICAgdmFsdWVGb3JFeHRyYU5vZGVzID0gdmFsdWU7CiAgIHNlZ1RyZWVTaXplID0gY2FsY3VsYXRlU2l6ZShkYXRhLnNpemUoKSk7CiAgIGJ1aWxkVHJlZShkYXRhKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gU2VnbWVudFRyZWU8VD46OlNlZ21lbnRUcmVlKFQgYXJbXSwgaW50IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCB2YWx1ZSwgVCAoKmNvbWJpbmUpKFQgb2JqMSwgVCBvYmoyKSkKewogICB0aGlzLT5jb21iaW5lID0gY29tYmluZTsKICAgdmFsdWVGb3JFeHRyYU5vZGVzID0gdmFsdWU7CiAgIHNlZ1RyZWVTaXplID0gY2FsY3VsYXRlU2l6ZShuKTsKCiAgIHN0ZDo6dmVjdG9yPFQ+IGRhdGE7CiAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgIGRhdGEucHVzaF9iYWNrKGFyW2ldKTsKCiAgIGJ1aWxkVHJlZShkYXRhKTsKfQoKCnRlbXBsYXRlPGNsYXNzIFQ+IGludCBTZWdtZW50VHJlZTxUPjo6Y2FsY3VsYXRlU2l6ZShpbnQgbikKewogICAgaW50IHBvdzIgPSAxOwogICAgd2hpbGUoIHBvdzIgPCBuKQogICAgewogICAgICAgIHBvdzIgPSBwb3cyIDw8IDE7CiAgICB9CiAgICByZXR1cm4gMipwb3cyIC0gMTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gVCBTZWdtZW50VHJlZTxUPjo6cXVlcnkoaW50IGwsIGludCByKQp7CiAgICBpbnQgc3QgPSAwLCBlZCA9IHNlZ1RyZWVTaXplLzI7CiAgICByZXR1cm4gcXVlcnlIZWxwZXIobCwgciwgc3QsIGVkLCAwKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gVCBTZWdtZW50VHJlZTxUPjo6cXVlcnlIZWxwZXIoaW50IGwsaW50IHIsIGludCBzdCwgaW50IGVkLCBpbnQgbm9kZSkKewogICAgaWYoIChyIDwgc3QpIHx8IChsID4gZWQpIHx8IChsID4gcikgKQogICAgICAgIHJldHVybiB2YWx1ZUZvckV4dHJhTm9kZXM7CiAgICBpZihzdCA+PSBsICYmIGVkIDw9IHIpCiAgICAgICAgcmV0dXJuIHRyZWVbbm9kZV07CiAgICBUIGxlZnRWYWwgPSBxdWVyeUhlbHBlcihsLCByLCBzdCwgKHN0ICsgZWQpLzIsIGxlZnQobm9kZSkpOwogICAgVCByaWdodFZhbCA9IHF1ZXJ5SGVscGVyKGwsIHIsIChzdCtlZCkvMiArIDEsIGVkLCByaWdodChub2RlKSk7CiAgICByZXR1cm4gY29tYmluZShsZWZ0VmFsLCByaWdodFZhbCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgU2VnbWVudFRyZWU8VD46OmJ1aWxkVHJlZShzdGQ6OnZlY3RvcjxUPiBkYXRhKQp7CiAgIGludCBuID0gZGF0YS5zaXplKCk7CiAgIHRyZWUgPSBuZXcgVFtzZWdUcmVlU2l6ZV07CiAgIGludCBleHRyYU5vZGVzID0gKHNlZ1RyZWVTaXplLzIgKyAxKSAtIG47CiAgIGZvcihpbnQgaSA9IHNlZ1RyZWVTaXplIC0gMTsgaSA+PSAwOyBpLS0pCiAgIHsKICAgICAgIGlmKGV4dHJhTm9kZXM+MCkKICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHRyZWVbaV0gPSB2YWx1ZUZvckV4dHJhTm9kZXM7CiAgICAgICAgICAgICAgIGV4dHJhTm9kZXMtLTsKICAgICAgICAgICB9CiAgICAgICBlbHNlIGlmKG4+MCkKICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHRyZWVbaV0gPSBkYXRhW24tMV07CiAgICAgICAgICAgICAgIG4tLTsKICAgICAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICAgICAgdHJlZVtpXSA9IGNvbWJpbmUodHJlZVtsZWZ0KGkpXSwgdHJlZVtyaWdodChpKV0pOwogICB9Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgU2VnbWVudFRyZWU8VD46OnVwZGF0ZShpbnQgaWR4LCBUIHZhbCkKewogICAgaW50IHNlZ1RyZWVJZHggPSAoc2VnVHJlZVNpemUvMikgKyBpZHg7CiAgICB0cmVlW3NlZ1RyZWVJZHhdID0gdmFsOwogICAgd2hpbGUocGFyZW50KHNlZ1RyZWVJZHgpID49IDApCiAgICB7CiAgICAgICAgc2VnVHJlZUlkeCA9IHBhcmVudChzZWdUcmVlSWR4KTsKICAgICAgICBpZihyaWdodChzZWdUcmVlSWR4KSA8IHNlZ1RyZWVTaXplKQogICAgICAgICAgdHJlZVtzZWdUcmVlSWR4XSA9IGNvbWJpbmUodHJlZVtsZWZ0KHNlZ1RyZWVJZHgpXSwgdHJlZVtyaWdodChzZWdUcmVlSWR4KV0pOwogICAgICAgIGlmKHNlZ1RyZWVJZHggPT0gMCkKICAgICAgICAgICAgYnJlYWs7CiAgICB9Cn0KCmludCBsYXJnZShpbnQgeCwgaW50IHkpe3JldHVybiBtYXgoeCx5KTt9ClNlZ21lbnRUcmVlIDwgaW50ID4gcmFuZ2VNYXhRdWVyaWVzKHZlY3RvcjxpbnQ+KCksMCxsYXJnZSk7CgppbnQgUk1RKGludCBMLCBpbnQgUikKewogICAgaWYoTD5SKXJldHVybiAwOwogICAgcmV0dXJuIHJhbmdlTWF4UXVlcmllcy5xdWVyeShMLFIpOwp9Cgp2b2lkIHdoYXRzV2l0aFRoaXNPUEZvcm1hdCgpewogICAgc3RhdGljIGludCB0bm8gPSAxOwogICAgY291dCA8PCAiQ2FzZSAjIiA8PHRubysrIDw8IjogIjsKfQoKaW50IHNvbHZlKHZlY3RvcjxpbnQ+JiB2LCBpbnQgc3RydCwgaW50IGspCnsKICAgIGlmKGsgPT0gMSlyZXR1cm4gc3RydDsKCiAgICAvLyBiaW5hcnkgc2VhcmNoIGxlZnQgcmVnaW9uCiAgICBpbnQgbG8gPSAxLCBoaSA9IHN0cnQgLSAxOwogICAgd2hpbGUobG8gPD0gaGkpewogICAgICAgIGludCBtaWQgPSAobG8raGkpLzI7CiAgICAgICAgaW50IHJpZ2h0Um9vbSA9IGsgKyBtaWQgLSAxOwoKICAgICAgICBpZihyaWdodFJvb20gPCBzdHJ0KQogICAgICAgICAgICBsbyA9IG1pZCArIDE7CgogICAgICAgIGVsc2UgaWYocmlnaHRSb29tID4gKGludCl2LnNpemUoKSAtIDEpCiAgICAgICAgICAgIGhpID0gbWlkIC0xOwoKICAgICAgICBlbHNlewogICAgICAgICAgICBib29sIHJlYWNoUmlnaHQxc3QgPSAoUk1RKG1pZCwgc3RydCAtIDEpID4gUk1RKHN0cnQsIHJpZ2h0Um9vbSAtIDEpKSA/IDEgOiAwOwogICAgICAgICAgICBib29sIHJlYWNoTWlkID0gKFJNUShtaWQsIHN0cnQgLSAxKSA8IFJNUShzdHJ0LCByaWdodFJvb20pKSA/IDEgOiAwOwogICAgICAgICAgICBpZihyZWFjaE1pZCAmJiByZWFjaFJpZ2h0MXN0KQogICAgICAgICAgICAgICAgcmV0dXJuIG1pZDsKICAgICAgICAgICAgZWxzZSBpZihyZWFjaE1pZCkKICAgICAgICAgICAgICAgIGhpID0gbWlkIC0gMTsKICAgICAgICAgICAgZWxzZSBsbyA9IG1pZCArIDE7CiAgICAgICAgfQogICAgfQoKICAgIC8vIGJpbmFyeSBzZWFyY2ggcmlnaHQgcmVnaW9uCiAgICBsbyA9IHN0cnQrMSwgaGkgPSAoaW50KXYuc2l6ZSgpIC0gMTsKICAgIHdoaWxlKGxvIDw9IGhpKXsKCiAgICAgICAgaW50IG1pZCA9IChsbytoaSkvMjsKICAgICAgICBpbnQgbGVmdFJvb20gPSBtaWQgLSBrICsgMTsKCiAgICAgICAgaWYobGVmdFJvb20gPiBzdHJ0KQogICAgICAgICAgICBoaSA9IG1pZCAtIDE7CiAgICAgICAgZWxzZSBpZihsZWZ0Um9vbSA8PSAwKQogICAgICAgICAgICBsbyA9IG1pZCsxOwoKICAgICAgICBlbHNlewogICAgICAgICAgICBib29sIHJlYWNoTGVmdDFzdCA9IChSTVEobGVmdFJvb20sIHN0cnQgLSAxKSA8IFJNUShzdHJ0LCBtaWQgLSAxKSkgPyAxIDogMDsKICAgICAgICAgICAgYm9vbCByZWFjaE1pZCA9IChSTVEobGVmdFJvb20gLSAxLCBzdHJ0IC0gMSkgPiBSTVEoc3RydCwgbWlkIC0gMSkpID8gMSA6IDA7CiAgICAgICAgICAgIGlmKHJlYWNoTWlkICYmIHJlYWNoTGVmdDFzdCkKICAgICAgICAgICAgICAgIHJldHVybiBtaWQ7CiAgICAgICAgICAgIGVsc2UgaWYocmVhY2hNaWQpCiAgICAgICAgICAgICAgICBsbyA9IG1pZCArIDE7CiAgICAgICAgICAgIGVsc2UgaGkgPSBtaWQgLSAxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAtMTsKfQoKaW50IG1haW4oKSB7CiAgIGZhc3RfaW87CiAgIGxsIHQsbixtLHgsaSxqLGsscTsKICAgY2luID4+IHQ7CiAgIC8vdCA9IDE7CiAgIHdoaWxlKHQtLSkKICAgewogICAgICAgIGNpbiA+PiBuID4+IHE7CiAgICAgICAgdmVjdG9yPGludD4gZGlmZmljdWx0eShuKzEpOwoKICAgICAgICBmcigxLG4pCiAgICAgICAgICAgIGNpbiA+PiBkaWZmaWN1bHR5W2ldOwogICAgICAgIGRpZmZpY3VsdHlbMF0gPSBkaWZmaWN1bHR5W25dID0gMWU5OwoKICAgICAgICByYW5nZU1heFF1ZXJpZXMgPSBTZWdtZW50VHJlZTxpbnQ+KGRpZmZpY3VsdHksMCxsYXJnZSk7CiAgICAgICAgdmVjdG9yPGludD4gYW5zOwogICAgICAgIHdoaWxlKHEtLSl7CiAgICAgICAgICAgIGludCBzdHJ0LCBrOwogICAgICAgICAgICBjaW4gPj4gc3RydCA+PiBrOwogICAgICAgICAgICBhbnMucHVzaF9iYWNrKHNvbHZlKGRpZmZpY3VsdHksIHN0cnQsIGspKTsKICAgICAgICB9CgogICAgICAgIHdoYXRzV2l0aFRoaXNPUEZvcm1hdCgpOwogICAgICAgIGZvcihpbnQgeCA6IGFucyljb3V0IDw8IHggPDwnICc7CiAgICAgICAgY291dCA8PCAnXG4nOwogICB9CiAgIHJldHVybiAwOwp9Cg==