//g++ 1.cpp -std=c++14 -O2 -I . #include using namespace std; #include using namespace atcoder; using ll = long long; using ld = long double; using vi = vector; using vvi = vector; using vll = vector; using vvll = vector; using vld = vector; using vvld = vector; using vst = vector; using vvst = vector; #define fi first #define se second #define pb push_back #define eb emplace_back #define pq_big(T) priority_queue,less> #define pq_small(T) priority_queue,greater> #define all(a) a.begin(),a.end() #define rep(i,start,end) for(ll i=start;i<(ll)(end);i++) #define per(i,start,end) for(ll i=start;i>=(ll)(end);i--) #define uniq(a) sort(all(a));a.erase(unique(all(a)),a.end()) constexpr ll mod = 1e9+7; bool ok(vvi &g){ int n=g.size(),m=g[0].size(); rep(i,0,n){ bool flg=false; rep(j,0,m){ if(g[i][j]==1){ flg=true; } } if(flg==false){ return flg; } } rep(j,0,m){ bool flg=false; rep(i,0,n){ if(g[i][j]==1){ flg=true; } } if(flg==false){ return flg; } } return true; } const int MAX=1510000; const long long MOD=1000000007; long long fac[MAX],finv[MAX],inv[MAX]; void COMinit(){ fac[0]=fac[1]=1; finv[0]=finv[1]=1; inv[1]=1; for(int i=2;i>h>>w; /* int ans=0; vvi g(h,vi(w)); rep(bit,0,(1<<(h*w))){ rep(i,0,h){ rep(j,0,w){ g[i][j]=0; if(bit&(1<<(i*w+j))){ g[i][j]=1; } } } ans+=ok(g); } cout<