#include <bits/stdc++.h>
#define FOR(i, a, b) for (int i = (a); i <= (b); i++)
#define FOD(i, a, b) for (int i = (a); i >= (b); i--)
#pragma GCC optimize("O3,unroll-loops")
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
using ll=long long;
#define el cout<<'\n'
using namespace std;
const int mod=1e9+7;
const int MAXN=1e5+10;
int mul(int a, int b){return 1ll*a*b%mod;}
int fact[MAXN];
int inv[MAXN];
int Pow(ll a, ll n){
ll ans=1;
a%=mod;
while(n){
if(n&1){
ans=(ans*a)%mod;
}
a=(a*a)%mod;
n>>=1;
}
return ans;
}
void init(){
fact[0]=1;
FOR(i,1,MAXN-1){
fact[i]=mul(i,fact[i-1]);
}
inv[MAXN-1]=Pow(fact[MAXN-1],mod-2);
FOD(i,MAXN-2,0){
inv[i]=mul(inv[i+1],i+1);
}
}
ll C(int k, int n){
if(n<k||k<0) return 0;
else return mul(mul(fact[n],inv[k]),inv[n-k]);
}
int main(){
init();
return 0^0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvciAoaW50IGkgPSAoYSk7IGkgPD0gKGIpOyBpKyspCiNkZWZpbmUgRk9EKGksIGEsIGIpIGZvciAoaW50IGkgPSAoYSk7IGkgPj0gKGIpOyBpLS0pCiNwcmFnbWEgR0NDIG9wdGltaXplKCJPMyx1bnJvbGwtbG9vcHMiKQojZGVmaW5lIFRJTUUgICgxLjAgKiBjbG9jaygpIC8gQ0xPQ0tTX1BFUl9TRUMpCnVzaW5nIGxsPWxvbmcgbG9uZzsKI2RlZmluZSBlbCBjb3V0PDwnXG4nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBtb2Q9MWU5Kzc7CmNvbnN0IGludCBNQVhOPTFlNSsxMDsKCmludCBtdWwoaW50IGEsIGludCBiKXtyZXR1cm4gMWxsKmEqYiVtb2Q7fQppbnQgZmFjdFtNQVhOXTsKaW50IGludltNQVhOXTsKaW50IFBvdyhsbCBhLCBsbCBuKXsKICAgIGxsIGFucz0xOwogICAgYSU9bW9kOwogICAgd2hpbGUobil7CiAgICAgICAgaWYobiYxKXsKICAgICAgICAgICAgYW5zPShhbnMqYSklbW9kOwogICAgICAgIH0KICAgICAgICBhPShhKmEpJW1vZDsKICAgICAgICBuPj49MTsKICAgIH0KICAgIHJldHVybiBhbnM7Cn0Kdm9pZCBpbml0KCl7CiAgICBmYWN0WzBdPTE7CiAgICBGT1IoaSwxLE1BWE4tMSl7CiAgICAgICAgZmFjdFtpXT1tdWwoaSxmYWN0W2ktMV0pOwogICAgfQogICAgaW52W01BWE4tMV09UG93KGZhY3RbTUFYTi0xXSxtb2QtMik7CiAgICBGT0QoaSxNQVhOLTIsMCl7CiAgICAgICAgaW52W2ldPW11bChpbnZbaSsxXSxpKzEpOwogICAgfQp9CmxsIEMoaW50IGssIGludCBuKXsKICAgIGlmKG48a3x8azwwKSByZXR1cm4gMDsKICAgIGVsc2UgcmV0dXJuIG11bChtdWwoZmFjdFtuXSxpbnZba10pLGludltuLWtdKTsKfQppbnQgbWFpbigpewoJaW5pdCgpOwoJcmV0dXJuIDBeMDsKfQ==