#include <bits/stdc++.h>
#define ll long long
using namespace std;
// Factorial Precomputation
const int N=1e6+5;
const long long MOD=1e9+7;
long long fact[N],invfact[N];
long long modpow(long long a,long long b){
long long r=1;
while(b){
if(b&1) r=r*a%MOD;
a=a*a%MOD;
b>>=1;
}
return r;
}
ll modinv(ll a,ll MOD){
return modpow(a, MOD - 2);
}
void init(){
fact[0]=1;
for(int i=1;i<N;i++)
fact[i]=fact[i-1]*i%MOD;
invfact[N-1]=modpow(fact[N-1],MOD-2);
for(int i=N-2;i>=0;i--)
invfact[i]=invfact[i+1]*(i+1)%MOD;
}
// Combination nCr
long long nCr(int n,int r){
if(r<0||r>n) return 0;
return fact[n]*invfact[r]%MOD*invfact[n-r]%MOD;
}
// Permutation nPr
long long nPr(int n,int r){
if(r<0||r>n) return 0;
return fact[n]*invfact[n-r]%MOD;
}
int main(){
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBGYWN0b3JpYWwgUHJlY29tcHV0YXRpb24KY29uc3QgaW50IE49MWU2KzU7CmNvbnN0IGxvbmcgbG9uZyBNT0Q9MWU5Kzc7Cgpsb25nIGxvbmcgZmFjdFtOXSxpbnZmYWN0W05dOwoKbG9uZyBsb25nIG1vZHBvdyhsb25nIGxvbmcgYSxsb25nIGxvbmcgYil7CiAgICBsb25nIGxvbmcgcj0xOwogICAgd2hpbGUoYil7CiAgICAgICAgaWYoYiYxKSByPXIqYSVNT0Q7CiAgICAgICAgYT1hKmElTU9EOwogICAgICAgIGI+Pj0xOwogICAgfQogICAgcmV0dXJuIHI7Cn0KbGwgbW9kaW52KGxsIGEsbGwgTU9EKXsKICAgIHJldHVybiBtb2Rwb3coYSwgTU9EIC0gMik7Cn0Kdm9pZCBpbml0KCl7CiAgICBmYWN0WzBdPTE7CiAgICBmb3IoaW50IGk9MTtpPE47aSsrKQogICAgICAgIGZhY3RbaV09ZmFjdFtpLTFdKmklTU9EOwoKICAgIGludmZhY3RbTi0xXT1tb2Rwb3coZmFjdFtOLTFdLE1PRC0yKTsKICAgIGZvcihpbnQgaT1OLTI7aT49MDtpLS0pCiAgICAgICAgaW52ZmFjdFtpXT1pbnZmYWN0W2krMV0qKGkrMSklTU9EOwp9CgoKCi8vIENvbWJpbmF0aW9uIG5Dcgpsb25nIGxvbmcgbkNyKGludCBuLGludCByKXsKICAgIGlmKHI8MHx8cj5uKSByZXR1cm4gMDsKICAgIHJldHVybiBmYWN0W25dKmludmZhY3Rbcl0lTU9EKmludmZhY3Rbbi1yXSVNT0Q7Cn0KCi8vIFBlcm11dGF0aW9uIG5Qcgpsb25nIGxvbmcgblByKGludCBuLGludCByKXsKICAgIGlmKHI8MHx8cj5uKSByZXR1cm4gMDsKICAgIHJldHVybiBmYWN0W25dKmludmZhY3Rbbi1yXSVNT0Q7Cn0KCgppbnQgbWFpbigpewoKfQoK