#include<bits/stdc++.h>
/*** Input Output ***/
#define pii pair<int, int>
#define plll pair<ll, pll>
#define pll pair<ll, ll>
#define pdb pair<db, db>
#define vi vector<int>
#define vpdb vector<pdb>
#define vl vector<ll>
#define vdb vector<db>
#define vb vector<bool>
#define vs vector<str>
#define vpii vector<pii>
#define vpll vector<pll>
#define vplll vector<plll>
#define vpd vector<pd>
#define IOS ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define ll long long
#define ull unsigned long long
#define str string
#define db double
/*** Define Values ***/
//#define mx 200005
// #define mod 111539786
#define PI acos(-1.0)
#define eps 1e-7
#define size1 15
#define pb push_back
#define fi first
#define se second
#define mp make_pair
#define mem(name, value) memset(name, value, sizeof(name))
/*** Sorts ***/
#define all(v) (v).begin(), (v).end()
#define rev(v) reverse(all(v))
#define srt(v) sort(all(v))
#define srtGreat(v) sort(all(v), greater<ll>())
/*** Some Prints ***/
#define en cout << '\n';
#define fi1 cout << "First\n"
#define se2 cout << "Second\n"
#define no cout << "NO\n"
#define yes cout << "YES\n"
#define case cout << "Case " << t++ << ": "
#define whi while (ii<=n)
//loops
#define FOR(i, a, b) for(int i=(int)a;i<=(int)b;i++)
#define ROF(i, a, b) for(int i=(int)a;i>=(int)b;i--)
#define rep(a, x) for(auto& a : x)
#define MASK(x) (1ll<<(x))
#define BIT(x, i) (((x) >> (i)) & 1)
#define SQR(x) (x*x)
const int MOD = 1e9+7;
const ll MOD1 = 1e9+7;
const int MAXN = 2e5+200;
const int MAX = 5e3+20;
const int LOG = 30;
const ll base = 311;
const ll INF = 1e18+2;
const db pi = acos(1);
const int EPS = 1e-9;
using namespace std;
void solve(){
}
int main(){
IOS;
#ifndef ONLINE_JUDGE
freopen("input.inp", "r", stdin);
freopen("output.out", "w", stdout);
#endif
// int t=1;
// cin>>t;
// while(t--)
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCi8qKiogSW5wdXQgT3V0cHV0ICoqKi8KI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBwbGxsIHBhaXI8bGwsIHBsbD4KI2RlZmluZSBwbGwgcGFpcjxsbCwgbGw+CiNkZWZpbmUgcGRiIHBhaXI8ZGIsIGRiPgojZGVmaW5lIHZpIHZlY3RvcjxpbnQ+CiNkZWZpbmUgdnBkYiB2ZWN0b3I8cGRiPgojZGVmaW5lIHZsIHZlY3RvcjxsbD4KI2RlZmluZSB2ZGIgdmVjdG9yPGRiPgojZGVmaW5lIHZiIHZlY3Rvcjxib29sPgojZGVmaW5lIHZzIHZlY3RvcjxzdHI+CiNkZWZpbmUgdnBpaSB2ZWN0b3I8cGlpPgojZGVmaW5lIHZwbGwgdmVjdG9yPHBsbD4KI2RlZmluZSB2cGxsbCB2ZWN0b3I8cGxsbD4KI2RlZmluZSB2cGQgdmVjdG9yPHBkPgojZGVmaW5lIElPUyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCkKCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIHN0ciBzdHJpbmcKI2RlZmluZSBkYiBkb3VibGUKCi8qKiogRGVmaW5lIFZhbHVlcyAqKiovCi8vI2RlZmluZSBteCAyMDAwMDUKLy8gI2RlZmluZSBtb2QgMTExNTM5Nzg2CiNkZWZpbmUgUEkgYWNvcygtMS4wKQojZGVmaW5lIGVwcyAxZS03CiNkZWZpbmUgc2l6ZTEgMTUKCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBtZW0obmFtZSwgdmFsdWUpIG1lbXNldChuYW1lLCB2YWx1ZSwgc2l6ZW9mKG5hbWUpKQoKLyoqKiBTb3J0cyAqKiovCiNkZWZpbmUgYWxsKHYpICh2KS5iZWdpbigpLCAodikuZW5kKCkKI2RlZmluZSByZXYodikgcmV2ZXJzZShhbGwodikpCiNkZWZpbmUgc3J0KHYpIHNvcnQoYWxsKHYpKQojZGVmaW5lIHNydEdyZWF0KHYpIHNvcnQoYWxsKHYpLCBncmVhdGVyPGxsPigpKQoKLyoqKiBTb21lIFByaW50cyAqKiovCiNkZWZpbmUgZW4gY291dCA8PCAnXG4nOwojZGVmaW5lIGZpMSBjb3V0IDw8ICJGaXJzdFxuIgojZGVmaW5lIHNlMiBjb3V0IDw8ICJTZWNvbmRcbiIKI2RlZmluZSBubyBjb3V0IDw8ICJOT1xuIgojZGVmaW5lIHllcyBjb3V0IDw8ICJZRVNcbiIKI2RlZmluZSBjYXNlIGNvdXQgPDwgIkNhc2UgIiA8PCB0KysgPDwgIjogIgojZGVmaW5lIHdoaSB3aGlsZSAoaWk8PW4pCgovL2xvb3BzCiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvcihpbnQgaT0oaW50KWE7aTw9KGludCliO2krKykKI2RlZmluZSBST0YoaSwgYSwgYikgZm9yKGludCBpPShpbnQpYTtpPj0oaW50KWI7aS0tKQojZGVmaW5lIHJlcChhLCB4KSBmb3IoYXV0byYgYSA6IHgpCiNkZWZpbmUgTUFTSyh4KSAoMWxsPDwoeCkpCiNkZWZpbmUgQklUKHgsIGkpICgoKHgpID4+IChpKSkgJiAxKSAKI2RlZmluZSBTUVIoeCkgKHgqeCkKY29uc3QgaW50IE1PRCA9IDFlOSs3Owpjb25zdCBsbCBNT0QxID0gMWU5Kzc7CmNvbnN0IGludCBNQVhOID0gMmU1KzIwMDsKY29uc3QgaW50IE1BWCA9IDVlMysyMDsKY29uc3QgaW50IExPRyA9IDMwOwpjb25zdCBsbCBiYXNlID0gMzExOwpjb25zdCBsbCBJTkYgPSAxZTE4KzI7CmNvbnN0IGRiIHBpID0gYWNvcygxKTsKY29uc3QgaW50IEVQUyA9IDFlLTk7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHNvbHZlKCl7CiAgICAgIAp9ICAgCgppbnQgbWFpbigpeyAKICBJT1M7ICAgCiAgI2lmbmRlZiBPTkxJTkVfSlVER0UKICBmcmVvcGVuKCJpbnB1dC5pbnAiLCAiciIsIHN0ZGluKTsgCiAgZnJlb3Blbigib3V0cHV0Lm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAjZW5kaWYKICAvLyBpbnQgdD0xOwogIC8vIGNpbj4+dDsKICAvLyB3aGlsZSh0LS0pCiAgICBzb2x2ZSgpOwoKfQ==