#include <bits/stdc++.h>
using namespace std;
#define ll long long
/*
* Think twice, code once
* Think of different approaches to tackle a problem: write them down.
* Think of different views of the problem. don't look from only one side.
* don't get stuck in one approach.
* common mistakes: - over_flow
* - out_of_bound index
* - infinite loop
* - corner cases
* - duplication counting.
*/
vector<ll> getRepresentation(ll num, ll base)
{
vector<ll> ans;
while (num)
{
ans.push_back(num%base);
num /= base;
}
reverse(ans.begin(), ans.end());
return ans;
}
bool isPowerOfTwo(long long num)
{
return __builtin_popcountll(num) == 1;
}
bool checkBit (long long num, long long bit)
{
return ((num >> bit) & 1);
}
long long toggleBit (long long num, long long bit)
{
return (num ^ (1LL << bit));
}
long long setBit (long long num, long long bit)
{
return (num | (1LL << bit));
}
long long clearBit (long long num, long long bit)
{
return (num & (~(1LL << bit)));
}
void solve()
{
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
freopen("Errors.txt", "w", stderr);
#endif
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t = 1;
// cin >> t;
while (t--)
{
solve();
if (t) cout << '\n';
}
cout << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCgovKgogKiBUaGluayB0d2ljZSwgY29kZSBvbmNlCiAqIFRoaW5rIG9mIGRpZmZlcmVudCBhcHByb2FjaGVzIHRvIHRhY2tsZSBhIHByb2JsZW06IHdyaXRlIHRoZW0gZG93bi4KICogVGhpbmsgb2YgZGlmZmVyZW50IHZpZXdzIG9mIHRoZSBwcm9ibGVtLiBkb24ndCBsb29rIGZyb20gb25seSBvbmUgc2lkZS4KICogZG9uJ3QgZ2V0IHN0dWNrIGluIG9uZSBhcHByb2FjaC4KICogY29tbW9uIG1pc3Rha2VzOiAtIG92ZXJfZmxvdwogKiAgICAgICAgICAgICAgICAgIC0gb3V0X29mX2JvdW5kIGluZGV4CiAqICAgICAgICAgICAgICAgICAgLSBpbmZpbml0ZSBsb29wCiAqICAgICAgICAgICAgICAgICAgLSBjb3JuZXIgY2FzZXMKICogICAgICAgICAgICAgICAgICAtIGR1cGxpY2F0aW9uIGNvdW50aW5nLgoqLwoKdmVjdG9yPGxsPiBnZXRSZXByZXNlbnRhdGlvbihsbCBudW0sIGxsIGJhc2UpCnsKICAgIHZlY3RvcjxsbD4gYW5zOwogICAgd2hpbGUgKG51bSkKICAgIHsKICAgICAgICBhbnMucHVzaF9iYWNrKG51bSViYXNlKTsKICAgICAgICBudW0gLz0gYmFzZTsKICAgIH0KICAgIHJldmVyc2UoYW5zLmJlZ2luKCksIGFucy5lbmQoKSk7CiAgICByZXR1cm4gYW5zOwp9Cgpib29sIGlzUG93ZXJPZlR3byhsb25nIGxvbmcgbnVtKQp7CiAgICByZXR1cm4gX19idWlsdGluX3BvcGNvdW50bGwobnVtKSA9PSAxOwp9Cgpib29sIGNoZWNrQml0IChsb25nIGxvbmcgbnVtLCBsb25nIGxvbmcgYml0KQp7CiAgICByZXR1cm4gKChudW0gPj4gYml0KSAmIDEpOwp9Cgpsb25nIGxvbmcgdG9nZ2xlQml0IChsb25nIGxvbmcgbnVtLCBsb25nIGxvbmcgYml0KQp7CiAgICByZXR1cm4gKG51bSBeICgxTEwgPDwgYml0KSk7Cn0KCmxvbmcgbG9uZyBzZXRCaXQgKGxvbmcgbG9uZyBudW0sIGxvbmcgbG9uZyBiaXQpCnsKICAgIHJldHVybiAobnVtIHwgKDFMTCA8PCBiaXQpKTsKfQoKbG9uZyBsb25nIGNsZWFyQml0IChsb25nIGxvbmcgbnVtLCBsb25nIGxvbmcgYml0KQp7CiAgICByZXR1cm4gKG51bSAmICh+KDFMTCA8PCBiaXQpKSk7Cn0KCgp2b2lkIHNvbHZlKCkKewogICAgCn0KCmludCBtYWluKCkKewojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwogICAgZnJlb3BlbigiRXJyb3JzLnR4dCIsICJ3Iiwgc3RkZXJyKTsKI2VuZGlmCiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICBpbnQgdCA9IDE7CiAgICAvLyBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pCiAgICB7CiAgICAgICAgc29sdmUoKTsKICAgICAgICBpZiAodCkgY291dCA8PCAnXG4nOwogICAgfQogICAgY291dCA8PCAnXG4nOwogICAgcmV0dXJuIDA7Cn0=