#include #define syosu(x) fixed< P; typedef pair pdd; typedef pair pll; typedef vector vi; typedef vector vvi; typedef vector vd; typedef vector vvd; typedef vector vl; typedef vector vvl; typedef vector vs; typedef vector

vp; typedef vector vvp; typedef vector vpll; typedef pair pip; typedef vector vip; const int inf=1<<30; const ll INF=1ll<<60; const double pi=acos(-1); const double eps=1e-8; const ull mod=1e9+7; const int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1}; class Network{ private: int V; struct edge{ int to,cap,rev; }; vector > g; int DFS(int v,int t,int f,vi& iter,vi level){ if(v==t) return f; for(int &i=iter[v];i0&&level[v]0){ e.cap-=d; g[e.to][e.rev].cap+=d; return d; } } } return 0; } void BFS(int s,vi& level){ level=vi(V,-1); queue que; level[s]=0; que.push(s); while(!que.empty()){ int v=que.front(); que.pop(); for(int i=0;i0&&level[e.to]<0){ level[e.to]=level[v]+1; que.push(e.to); } } } } public: Network(int v){ V=v; g=vector >(v); } void add_edge(int s,int t,int c){ g[s].push_back(edge{t,c,(int)g[t].size()}); g[t].push_back(edge{s,0,(int)g[s].size()-1}); } int Dinic(int s,int t){ int res=0; while(1){ vi iter(V),level; BFS(s,level); if(level[t]<0) return res; int f; while((f=DFS(s,t,inf,iter,level))>0) res+=f; } } }; int w,n,m; vi a,b; int main(){ cin>>w>>n; a=vi(n); for(int i=0;i>a[i]; cin>>m; b=vi(m); for(int i=0;i>b[i]; Network nt(n+m+2); for(int i=0;i>N; for(int j=0;j>A; c[A-1][i]=0; } } for(int i=0;i=w?"SHIROBAKO":"BANSAKUTSUKITA")<