#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
using ll = long long;
#define i64 long long
#define ui64 unsigned long long
#define vi vector<int>
#define vs vector<string>
#define vvi vector<vector<int>>
#define vb vector<bool>
#define pii pair<int, int>
#define all(a) a.begin(), a.end()
#define ull unsigned long long
#define pb push_back
const int M = 2e5 + 7;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int INF = 1e9;
const double pi = acos(-1.0);
int inf = -1e18;
int dir[4][2] = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};
int n, m, k = 0, x, y, l, r;
string s;
int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a % b);
}
int lcm(int a, int b)
{
return a * b / gcd(a, b);
}
int ksm(int a, int b, int p)
{
int ans = 1;
a %= p;
while (b)
{
if (b & 1)
{
ans = ans * a % p;
}
a = a * a % p;
b >>= 1;
}
return ans;
}
int gsc(int a, int b, int p)
{
a %= p;
int res = 0;
while (b > 0)
{
if (b & 1)
{
res = (res + a) % p;
}
a = (a + a) % p;
b >>= 1;
}
return res;
}
// 并查集
// int fa[M];
// void init()
// {
// for(int i=1;i<M;i++)
// {
// fa[i]=i;
// }
// }
// int find(int a)
// {
// return a==fa[a]?a:fa[a]=find(fa[a]);
// }
// bool same(int a,int b)
// {
// return find(a)==find(b);
// }
// void join(int a,int b)
// {
// a=find(a);
// b=find(b);
// if(a!=b)
// {
// fa[a]=b;
// }
// }
// 树状数组
// int tr[M];
// int lb(int i)
// {
// return i & (-i);
// }
// void add(int i, int x)
// {
// for (; i <= n; i += lb(i))
// {
// tr[i] += x;
// }
// }
// int sum(int i)
// {
// int ans = 0;
// for (; i > 0; i -= lb(i))
// {
// ans += tr[i];
// }
// return ans;
// }
// int que(int l, int r)
// {
// return sum(r) - sum(l - 1);
// }
// 欧拉筛
// int cnt = 0;
// int pri[M];
// int vis[M];
// void ols(int n)
// {
// for (ll i = 2; i <= n; i++)
// {
// if (!vis[i])
// {
// pri[++cnt] = i;
// }
// for (ll j = 1; (ll)(i * pri[j]) <= n; j++)
// {
// vis[i * pri[j]] = 1;
// if (i % pri[j] == 0)
// {
// break;
// }
// }
// }
// }
// tarjan
// vi adj[M];
// int dfn[M], tim = 0, low[M];
// int stk[M], vis[M], pos = 0;
// int cnt = 0, scc[M], siz[M];
// void tarjan(int x)
// {
// tim++;
// dfn[x] = tim;
// low[x] = tim;
// for (int i : adj[x])
// {
// if (!dfn[i])
// {
// tarjan(i);
// low[i] = min(low[i], low[x]);
// }
// else if (vis[i])
// {
// low[i] = min(low[i], dfn[x]);
// }
// }
// if (dfn[x] == low[x])
// {
// cnt++;
// int now;
// do
// {
// now = stk[pos];
// pos--;
// vis[now] = 0;
// scc[now] = cnt;
// siz[cnt]++;
// } while (now != x);
// }
// }
// 字典树
// int tr[3000005][63];
// int cnt = 1;
// int p[3000005];
// int path(char ch)
// {
// if (islower(ch))
// {
// return ch - 'a';
// }
// else if (isupper(ch))
// {
// return ch + 26 - 'A';
// }
// return ch + 52 - '0';
// }
// void insert(string word)
// {
// int cur = 1;
// p[cur]++;
// for (int i = 0; i < word.size(); i++)
// {
// int c = path(word[i]);
// if (tr[cur][c] == 0)
// {
// tr[cur][c] = ++cnt;
// }
// cur = tr[cur][c];
// p[cur]++;
// }
// }
// int cou(string word)
// {
// int cur = 1;
// for (int i = 0; i < word.size(); i++)
// {
// int c = path(word[i]);
// if (tr[cur][c] == 0)
// {
// return 0;
// }
// cur = tr[cur][c];
// }
// return p[cur];
// }
// void clear()
// {
// for (int i = 1; i <= cnt; i++)
// {
// memset(tr[i], 0, sizeof(tr[i]));
// p[i] = 0;
// }
// cnt = 1;
// }
void solve()
{
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int qwq = 1;
// cin >> qwq;
/*
while (cin >> ws && cin.good())
{
solve();
}
*/
while (qwq--)
{
solve();
}
return 0;
}