output_description: Print the maximum possible score of A.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M Q
      a_1 b_1 c_1 d_1
      :
      a_Q b_Q c_Q d_Q
attempt: import glob
  
  # 問題ごとのディレクトリのトップからの相対パス
  REL_PATH = "ABC\\165\\C"
  
  # テスト用ファイル置き場のトップ
  TOP_PATH = "C:\\AtCoder"
  
  
  class Common:
  
      problem = []
      index = 0
  
      def __init__(self, rel_path):
          self.rel_path = rel_path
  
      def initialize(self, path):
          file = open(path)
          self.problem = file.readlines()
          self.index = 0
          return
  
      def input_data(self):
          try:
              IS_TEST
              self.index += 1
              return self.problem[self.index - 1]
  
          except NameError:
              return input()
  
      def resolve(self):
          pass
  
      def exec_resolve(self):
          try:
              IS_TEST
              for path in glob.glob(TOP_PATH + "\\" + self.rel_path + "/*.txt"):
                  print("Test: " + path)
                  self.initialize(path)
                  self.resolve()
                  print("\n\n")
          except NameError:
              self.resolve()
  
  
  class C(Common):
  
      def rec(self, A, now_index):
  
          point1 = 0
          point2 = 0
          if now_index == self.N - 1:
              for i in self.abcd:
                  if A[i[1] - 1] - A[i[0] - 1] == i[2]:
                      point1 += i[3]
  
          else:
              for i in range(A[now_index], self.M + 1):
                  A[now_index + 1] = i
                  tmp = self.rec(A, now_index + 1)
                  if tmp > point2:
                      point2 = tmp
  
          if point1 > point2:
              return point1
          return point2
  
      def resolve(self):
  
          self.N, self.M, self.Q = map(int, self.input_data().split())
          self.abcd = []
  
          for i in range(self.Q):
              self.abcd.append(list(map(int, self.input_data().split())))
  
          A = [0] * self.N
          A[0] = 1
  
          point = self.rec(A, 0)
          print(str(point))
  
  
  solver = C(REL_PATH)
  solver.exec_resolve()
  
problem_description: Statement
  
  Given are positive integers N, M, Q, and Q quadruples of integers ( a_i , b_i
  , c_i , d_i ).
  
  Consider a sequence A satisfying the following conditions:
  
    * A is a sequence of N positive integers.
    * 1 \leq A_1 \leq A_2 \le \cdots \leq A_N \leq M.
  
  Let us define a score of this sequence as follows:
  
    * The score is the sum of d_i over all indices i such that A_{b_i} - A_{a_i} = c_i. (If there is no such i, the score is 0.)
  
  Find the maximum possible score of A.
samples: [{"input": "3 4 3\n    1 3 3 100\n    1 2 2 10\n    2 3 2 10", "output": "110\n    \n\nWhen A = \\\\{1, 3, 4\\\\}, its score is 110. Under these conditions, no sequence\nhas a score greater than 110, so the answer is 110.\n\n* * *"}, {"input": "4 6 10\n    2 4 1 86568\n    1 4 0 90629\n    2 3 0 90310\n    3 4 1 29211\n    3 4 3 78537\n    3 4 2 8580\n    1 2 1 96263\n    1 4 2 2156\n    1 2 0 94325\n    1 4 3 94328", "output": "357500\n    \n\n* * *"}, {"input": "10 10 1\n    1 10 9 1", "output": "1"}]