Problem:
Score : 300 points

Problem 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.

Constraints

All values in input are integers.

2 ≤ N ≤ 10

1 \leq M \leq 10

1 \leq Q \leq 50

1 \leq a_i < b_i \leq N ( i = 1, 2, ..., Q )

0 \leq c_i \leq M - 1 ( i = 1, 2, ..., Q )

(a_i, b_i, c_i) \neq (a_j, b_j, c_j) (where i \neq j)

1 \leq d_i \leq 10^5 ( i = 1, 2, ..., Q )

Input

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

Output

Print the maximum possible score of A.

Sample Input 1

3 4 3
1 3 3 100
1 2 2 10
2 3 2 10

Sample Output 1

110

When A = \{1, 3, 4\}, its score is 110. Under these conditions, no sequence has a score greater than 110, so the answer is 110.

Sample Input 2

4 6 10
2 4 1 86568
1 4 0 90629
2 3 0 90310
3 4 1 29211
3 4 3 78537
3 4 2 8580
1 2 1 96263
1 4 2 2156
1 2 0 94325
1 4 3 94328

Sample Output 2

357500

Sample Input 3

10 10 1
1 10 9 1

Sample Output 3

1

Solution in Fortran (GNU Fortran 9.2.1) (judge verdict: Wrong Answer)

program main
  
  implicit none
  integer :: nn, mm, qq, ii, tmp
  integer(8) :: tmpans, ans
  integer,allocatable :: a(:)
  integer,allocatable :: b(:)
  integer,allocatable :: c(:)
  integer(8),allocatable :: d(:)
  integer,allocatable :: aa(:)
  integer :: i,j,k,l,m,n,o,p,q,r,s
  
  read(*,*) nn, mm, qq
  allocate(a(1:qq))
  allocate(b(1:qq))
  allocate(c(1:qq))
  allocate(d(1:qq))
  allocate(aa(1:n))
  
  do i = 1, qq
    read(*,*) a(i), b(i), c(i), d(i)
  end do

  aa = 0 
  ans = 0
  do i = 1, mm
    aa(1) = i
    do j = 1, mm
      aa(2) = j
      if ( nn == 2 ) then
        tmpans = 0
        do ii = 1, qq
          tmp = aa(b(ii))-aa(a(ii))
          if( tmp == c(ii) ) tmpans = tmpans + d(ii)
        end do
        if( tmpans >= ans ) ans = tmpans
      else 
        do k = 1, mm
          aa(3) = k
          if ( nn == 3 ) then
            tmpans = 0
            do ii = 1, qq
              tmp = aa(b(ii))-aa(a(ii))
              if( tmp == c(ii) ) tmpans = tmpans + d(ii)
            end do
            if( tmpans >= ans ) ans = tmpans
          else 
            do l = 1, mm
              aa(4) = l
              if ( nn == 4 ) then
                tmpans = 0
                do ii = 1, qq
                  tmp = aa(b(ii))-aa(a(ii))
                  if( tmp == c(ii) ) tmpans = tmpans + d(ii)
                end do
                if( tmpans >= ans ) ans = tmpans
              else 
                do m = 1, mm
                  aa(5) = m
                  if ( nn == 5 ) then
                    tmpans = 0
                    do ii = 1, qq
                      tmp = aa(b(ii))-aa(a(ii))
                      if( tmp == c(ii) ) tmpans = tmpans + d(ii)
                    end do
                    if( tmpans >= ans ) ans = tmpans
                  else 
                    do n = 1, mm
                      aa(6) = n
                      if ( nn == 6 ) then
                        tmpans = 0
                        do ii = 1, qq
                          tmp = aa(b(ii))-aa(a(ii))
                          if( tmp == c(ii) ) tmpans = tmpans + d(ii)
                        end do
                        if( tmpans >= ans ) ans = tmpans
                      else 
                        do o = 1, mm
                          aa(7) = o
                          if ( nn == 7 ) then
                            tmpans = 0
                            do ii = 1, qq
                              tmp = aa(b(ii))-aa(a(ii))
                              if( tmp == c(ii) ) tmpans = tmpans + d(ii)
                            end do
                            if( tmpans >= ans ) ans = tmpans
                          else 
                            do p = 1, mm
                              aa(8) = p
                              if ( nn == 8 ) then
                                tmpans = 0
                                do ii = 1, qq
                                  tmp = aa(b(ii))-aa(a(ii))
                                  if( tmp == c(ii) ) tmpans = tmpans + d(ii)
                                end do
                                if( tmpans >= ans ) ans = tmpans
                              else 
                                do q = 1, mm
                                  aa(9) = q
                                  if ( nn == 9 ) then
                                    tmpans = 0
                                    do ii = 1, qq
                                      tmp = aa(b(ii))-aa(a(ii))
                                      if( tmp == c(ii) ) tmpans = tmpans + d(ii)
                                    end do
                                    if( tmpans >= ans ) ans = tmpans
                                  else 
                                    do r = 1, mm
                                      aa(10) = r
                                      if ( nn == 10 ) then
                                        tmpans = 0
                                        do ii = 1, qq
                                          tmp = aa(b(ii))-aa(a(ii))
                                          if( tmp == c(ii) ) tmpans = tmpans + d(ii)
                                        end do
                                        if( tmpans >= ans ) ans = tmpans
                                      else 
                                      end if
                                    end do
                                  end if
                                end do
                              end if
                            end do
                          end if
                        end do
                      end if
                    end do
                  end if
                end do
              end if
            end do
          end if
        end do
      end if
    end do
  end do
  
  print*, ans
  
  
end program main