output_description: Print `YES` if Rng can complete the problem set without creating new
  candidates of problems; print `NO` if he cannot.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      D_1 D_2 ... D_N
      M
      T_1 T_2 ... T_M
attempt: import math
  import fractions
  import bisect
  import collections
  import itertools
  import heapq
  import string
  import sys
  import copy
  from decimal import *
  from collections import deque
  
  sys.setrecursionlimit(10**7)
  MOD = 10**9 + 7
  INF = float("inf")  # 無限大
  
  
  def gcd(a, b):
      return fractions.gcd(a, b)  # 最大公約数
  
  
  def lcm(a, b):
      return (a * b) // fractions.gcd(a, b)  # 最小公倍数
  
  
  def iin():
      return int(sys.stdin.readline())  # 整数読み込み
  
  
  def ifn():
      return float(sys.stdin.readline())  # 浮動小数点読み込み
  
  
  def isn():
      return sys.stdin.readline().split()  # 文字列読み込み
  
  
  def imn():
      return map(int, sys.stdin.readline().split())  # 整数map取得
  
  
  def imnn():
      return map(lambda x: int(x) - 1, sys.stdin.readline().split())  # 整数-1map取得
  
  
  def fmn():
      return map(float, sys.stdin.readline().split())  # 浮動小数点map取得
  
  
  def iln():
      return list(map(int, sys.stdin.readline().split()))  # 整数リスト取得
  
  
  def iln_s():
      return sorted(iln())  # 昇順の整数リスト取得
  
  
  def iln_r():
      return sorted(iln(), reverse=True)  # 降順の整数リスト取得
  
  
  def fln():
      return list(map(float, sys.stdin.readline().split()))  # 浮動小数点リスト取得
  
  
  def join(l, s=""):
      return s.join(l)  # リストを文字列に変換
  
  
  def perm(l, n):
      return itertools.permutations(l, n)  # 順列取得
  
  
  def perm_count(n, r):
      return math.factorial(n) // math.factorial(n - r)  # 順列の総数
  
  
  def comb(l, n):
      return itertools.combinations(l, n)  # 組み合わせ取得
  
  
  def comb_count(n, r):
      return math.factorial(n) // (
          math.factorial(n - r) * math.factorial(r)
      )  # 組み合わせの総数
  
  
  def two_distance(a, b, c, d):
      return ((c - a) ** 2 + (d - b) ** 2) ** 0.5  # 2点間の距離
  
  
  def m_add(a, b):
      return (a + b) % MOD
  
  
  def print_list(l):
      print(*l, sep="\n")
  
  
  def sieves_of_e(n):
      is_prime = [True] * (n + 1)
      is_prime[0] = False
      is_prime[1] = False
      for i in range(2, int(n**0.5) + 1):
          if not is_prime[i]:
              continue
          for j in range(i * 2, n + 1, i):
              is_prime[j] = False
      return is_prime
  
  
  N = iin()
  D = collections.Counter(iln())
  M = iin()
  T = collections.Counter(iln())
  
  isOK = False
  for key, value in T.items():
      if value > D[key]:
          break
  else:
      isOK = True
  print("YES" if isOK else "NO")
  
problem_description: Statement
  
  Rng is preparing a problem set for a qualification round of CODEFESTIVAL.
  
  He has N candidates of problems. The difficulty of the i-th candidate is D_i.
  
  There must be M problems in the problem set, and the difficulty of the i-th
  problem must be T_i. Here, one candidate of a problem cannot be used as
  multiple problems.
  
  Determine whether Rng can complete the problem set without creating new
  candidates of problems.
samples: [{"input": "5\n    3 1 4 1 5\n    3\n    5 4 3", "output": "YES\n    \n\n* * *"}, {"input": "7\n    100 200 500 700 1200 1600 2000\n    6\n    100 200 500 700 1600 1600", "output": "NO\n    \n\nNot enough 1600s.\n\n* * *"}, {"input": "1\n    800\n    5\n    100 100 100 100 100", "output": "NO\n    \n\n* * *"}, {"input": "15\n    1 2 2 3 3 3 4 4 4 4 5 5 5 5 5\n    9\n    5 4 3 2 1 2 3 4 5", "output": "YES"}]