#http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2435165 #AOJ最大流プログラム #FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO import collections class Dinic: def __init__(self, n): self.n = n self.g = [[] for i in range(n)] def add_edge(self, fr, to, cap): self.g[fr].append([to, cap, len(self.g[to])]) self.g[to].append([fr, 0, len(self.g[fr])-1]) def add_multi_edge(self, v1, v2, cap1, cap2): self.g[v1].append([v2, cap1, len(self.g[v2])]) self.g[v2].append([v1, cap2, len(self.g[v1])-1]) def bfs(self, s): level = [-1]*self.n deq = collections.deque() level[s] = 0 deq.append(s) while deq: v = deq.popleft() for e in self.g[v]: if e[1]>0 and level[e[0]]<0: level[e[0]] = level[v] + 1 deq.append(e[0]) self.level = level def dfs(self, v, t, f): if v==t: return f es = self.g[v] level = self.level for i in range(self.it[v], len(self.g[v])): e = es[i] if e[1]>0 and level[v]0: e[1] -= d self.g[e[0]][e[2]][1] += d self.it[v] = i return d self.it[v] = len(self.g[v]) return 0 def max_flow(self, s, t): flow = 0 while True: self.bfs(s) if self.level[t]<0: break self.it = [0]*self.n while True: f = self.dfs(s, t, 10**9+7) if f>0: flow += f else: break return flow #FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO #今回の問題分(インプット、頂点の組)FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO w=int(input()) n=int(input()) jj=[int(i) for i in input().split()] m=int(input()) cc=[int(i) for i in input().split()] qx=[] for i in range(m): qx.append([int(i) for i in input().split()]) del qx[i][0] # if qx[i]==[]: #FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO #頂点の組u,vと辺の重みc(今回は1)からグラフ作って最大流で解くFOOOOOOOOOOOO V=n+m+2 #(sとt追加) dinic = Dinic(V) for i in range(n): #始点s(番号0)から原画マンへの辺 u, v, c = 0, i+1, jj[i] dinic.add_edge(u, v, c) for i in range(m): # 作画監督から終点t(番号V-1)への辺 u, v, c = i+n+1, V-1, cc[i] dinic.add_edge(u, v, c) for i in range(n): #原画マンから作画監督への辺 for j in range(m): if i+1 not in qx[j]: node1, node2, omomi = i+1, j+n+1, 100000 else: node1, node2, omomi = i+1, j+n+1, 0 u, v, c = node1, node2, omomi dinic.add_edge(u, v, c) #print (dinic.max_flow(0, V-1)) if dinic.max_flow(0, V-1)>=w: print("SHIROBAKO") else: print("BANSAKUTSUKITA") #FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO """ 元々のinput V, E = [int(i) for i in input().split()] dinic = Dinic(V) for i in range(E): u, v, c = [int(i) for i in input().split()] dinic.add_edge(u, v, c) print (dinic.max_flow(0, V-1)) """