/* ___________________________________________ */
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define pushb push_back
#define SZ(v) (int)v.size()
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define debug cout << "NO ERROR"; exit(0);
#define endl "\n"
#define mapa(x, y) make_pair(x, y)
#define double long double
#define lb lower_bound
#define ub upper_bound
#define pii pair<int, int>
#define ALL(v) v.begin(), v.end()
#define BIT(x, i) (((x) >> (i)) & 1)
template<class X, class Y>
bool minimize(X &x, const Y &y) {
if (x > y) {
x = y;
return true;
}
return false;
}
template<class X, class Y>
bool maximize(X &x, const Y &y) {
if (x < y) {
x = y;
return true;
}
return false;
}
int lcm(int x, int y){
return x / __gcd(x, y) * y;
}
const int INF = 1e18;
const double pi = acos(-1);
const int MOD = 1e9 + 7;
const int LimN = 1e6 + 5;
const int LimM = 1e5 + 5;
const double dist = 0.000001;
const int ADD = 96e3;
const int d4x[4] = {-1, 1, 0, 0};
const int d4y[4] = {0, 0, 1, -1};
void solve() {
// code here
}
/* Authors: nguyen Hai Duong from le Do secondary school Da nang */
signed main() {
#ifndef ONLINE_JUDGE
freopen("ab.inp", "r", stdin);
freopen("ab.out", "w", stdout);
#else
// freopen("task.inp", "r", stdin);
// freopen("task.out", "w", stdout);
#endif
fast;
int numtest = 1;
// cin >> numtest;
while (numtest--) {
solve();
}
return 0;
}
// THIS IS DUONG's TEMPLATE &&09042012&&
class SegmentTree {
private:
int n;
vector<int> v;
const int INF = 1e9;
void update(int id, int l, int r, int pos, int val) {
if (pos < l || pos > r) return;
if (l == r) {
v[id] = val;
return;
}
int mid = (l + r) / 2;
update(id * 2, l, mid, pos, val);
update(id * 2 + 1, mid + 1, r, pos, val);
v[id] = min(v[id * 2], v[id * 2 + 1]);
}
int get(int id, int l, int r, int sta, int fin) {
if (fin < l || r < sta) return INF;
if (sta <= l && r <= fin) {
return v[id];
}
int mid = (l + r) / 2;
return min(
get(id * 2, l, mid, sta, fin),
get(id * 2 + 1, mid + 1, r, sta, fin)
);
}
public:
SegmentTree(int _n) {
n = _n;
v.assign(n * 5 + 5, INF);
}
void update(int pos, int val) {
update(1, 1, n, pos, val);
}
int get(int sta, int fin) {
if (sta > fin) return INF;
return get(1, 1, n, sta, fin);
}
};
LyogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAqLwoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGludCBsb25nIGxvbmcgCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBwdXNoYiBwdXNoX2JhY2sKI2RlZmluZSBTWih2KSAoaW50KXYuc2l6ZSgpCiNkZWZpbmUgZmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKQojZGVmaW5lIGRlYnVnIGNvdXQgPDwgIk5PIEVSUk9SIjsgZXhpdCgwKTsKI2RlZmluZSBlbmRsICJcbiIKI2RlZmluZSBtYXBhKHgsIHkpIG1ha2VfcGFpcih4LCB5KQojZGVmaW5lIGRvdWJsZSBsb25nIGRvdWJsZQojZGVmaW5lIGxiIGxvd2VyX2JvdW5kCiNkZWZpbmUgdWIgdXBwZXJfYm91bmQKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBBTEwodikgdi5iZWdpbigpLCB2LmVuZCgpCiNkZWZpbmUgQklUKHgsIGkpICgoKHgpID4+IChpKSkgJiAxKQoKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KYm9vbCBtaW5pbWl6ZShYICZ4LCBjb25zdCBZICZ5KSB7CiAgICBpZiAoeCA+IHkpIHsKICAgICAgICB4ID0geTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQoKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KYm9vbCBtYXhpbWl6ZShYICZ4LCBjb25zdCBZICZ5KSB7CiAgICBpZiAoeCA8IHkpIHsKICAgICAgICB4ID0geTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQoKaW50IGxjbShpbnQgeCwgaW50IHkpewogICAgcmV0dXJuIHggLyBfX2djZCh4LCB5KSAqIHk7Cn0KCmNvbnN0IGludCBJTkYgPSAxZTE4Owpjb25zdCBkb3VibGUgcGkgPSBhY29zKC0xKTsKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmNvbnN0IGludCBMaW1OID0gMWU2ICsgNTsKY29uc3QgaW50IExpbU0gPSAxZTUgKyA1Owpjb25zdCBkb3VibGUgZGlzdCA9IDAuMDAwMDAxOwpjb25zdCBpbnQgQUREID0gOTZlMzsKCmNvbnN0IGludCBkNHhbNF0gPSB7LTEsIDEsIDAsIDB9Owpjb25zdCBpbnQgZDR5WzRdID0gezAsIDAsIDEsIC0xfTsKCnZvaWQgc29sdmUoKSB7CgogICAgLy8gY29kZSBoZXJlCgp9CgovKiBBdXRob3JzOiBuZ3V5ZW4gSGFpIER1b25nIGZyb20gbGUgRG8gc2Vjb25kYXJ5IHNjaG9vbCBEYSBuYW5nICovCgpzaWduZWQgbWFpbigpIHsKICAgICNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJhYi5pbnAiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oImFiLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgICNlbHNlCiAgICAvLyBmcmVvcGVuKCJ0YXNrLmlucCIsICJyIiwgc3RkaW4pOwogICAgLy8gZnJlb3BlbigidGFzay5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICAjZW5kaWYKCiAgICBmYXN0OwoKICAgIGludCBudW10ZXN0ID0gMTsKICAgIC8vIGNpbiA+PiBudW10ZXN0OwoKICAgIHdoaWxlIChudW10ZXN0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9CgovLyBUSElTIElTIERVT05HJ3MgVEVNUExBVEUgJiYwOTA0MjAxMiYmCgoKCmNsYXNzIFNlZ21lbnRUcmVlIHsKCnByaXZhdGU6CiAgICBpbnQgbjsKICAgIHZlY3RvcjxpbnQ+IHY7CiAgICBjb25zdCBpbnQgSU5GID0gMWU5OwoKICAgIHZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgcG9zLCBpbnQgdmFsKSB7CiAgICAgICAgaWYgKHBvcyA8IGwgfHwgcG9zID4gcikgcmV0dXJuOwoKICAgICAgICBpZiAobCA9PSByKSB7CiAgICAgICAgICAgIHZbaWRdID0gdmFsOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CgogICAgICAgIHVwZGF0ZShpZCAqIDIsIGwsIG1pZCwgcG9zLCB2YWwpOwogICAgICAgIHVwZGF0ZShpZCAqIDIgKyAxLCBtaWQgKyAxLCByLCBwb3MsIHZhbCk7CgogICAgICAgIHZbaWRdID0gbWluKHZbaWQgKiAyXSwgdltpZCAqIDIgKyAxXSk7CiAgICB9CgogICAgaW50IGdldChpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHN0YSwgaW50IGZpbikgewogICAgICAgIGlmIChmaW4gPCBsIHx8IHIgPCBzdGEpIHJldHVybiBJTkY7CgogICAgICAgIGlmIChzdGEgPD0gbCAmJiByIDw9IGZpbikgewogICAgICAgICAgICByZXR1cm4gdltpZF07CiAgICAgICAgfQoKICAgICAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CgogICAgICAgIHJldHVybiBtaW4oCiAgICAgICAgICAgIGdldChpZCAqIDIsIGwsIG1pZCwgc3RhLCBmaW4pLAogICAgICAgICAgICBnZXQoaWQgKiAyICsgMSwgbWlkICsgMSwgciwgc3RhLCBmaW4pCiAgICAgICAgKTsKICAgIH0KCnB1YmxpYzoKICAgIFNlZ21lbnRUcmVlKGludCBfbikgewogICAgICAgIG4gPSBfbjsKICAgICAgICB2LmFzc2lnbihuICogNSArIDUsIElORik7CiAgICB9CgogICAgdm9pZCB1cGRhdGUoaW50IHBvcywgaW50IHZhbCkgewogICAgICAgIHVwZGF0ZSgxLCAxLCBuLCBwb3MsIHZhbCk7CiAgICB9CgogICAgaW50IGdldChpbnQgc3RhLCBpbnQgZmluKSB7CiAgICAgICAgaWYgKHN0YSA+IGZpbikgcmV0dXJuIElORjsKICAgICAgICByZXR1cm4gZ2V0KDEsIDEsIG4sIHN0YSwgZmluKTsKICAgIH0KfTs=