Recursion / Divide and Conquer - Exhaustive Search

時間制限 : 5 sec, メモリ制限 : 131072 KB
英語版はこちら

総当たり

長さ $n$ の数列 $A$ と整数 $m$ に対して、$A$ の要素の中のいくつかの要素を足しあわせて $m$ が作れるかどうかを判定するプログラムを作成してください。$A$ の各要素は1度だけ使うことができます。

数列 $A$ が与えられたうえで、質問として $q$ 個の $m_i$ が与えれるので、それぞれについて "yes" または "no" と出力してください。

入力

1行目に $n$、2行目に $A$ を表す $n$ 個の整数、3行目に $q$、4行目に $q$ 個の整数 $m_i$が与えられます。

出力

各質問について $A$ の要素を足しあわせて $m_i$ を作ることができれば yes と、できなければ no と出力してください。

制約

  • $n \leq 20$
  • $q \leq 200$
  • $1 \leq Aの要素 \leq 2,000$
  • $1 \leq m_i \leq 2,000$

入力例 1

5
1 5 7 10 21
4
2 4 17 8

出力例 1

no
no
yes
yes

Note

Algorithm