import bisect
m,x,n=map(int,raw_input().split())
ch=set()
ch.add(0)
ch.add(m)
rng=[[] for i in range(2)]

for i in range(n):
  b,e,v=map(int,raw_input().split())
  ch.add(b)
  ch.add(e)
  if b<e:
    rng[0].append((b,v))
    rng[0].append((e,0))
  else:
    rng[1].append((e,v))
    rng[1].append((b,0)) 
ch=sorted(list(ch))

val=[[] for i in range(2)]
xrng=[[] for i in range(2)]
for j in range(2):
  rng[j].sort()
  sm=0
  for i in range(len(rng[j])):
    val[j].append(sm)
    if rng[j][i][1]>0:
      sm+=rng[j][i][1]*(rng[j][i+1][0]-rng[j][i][0])
  xrng[j]=[y[0] for y in rng[j]]

def csum(x,ind):
  ix=bisect.bisect_left(xrng[ind],x)
  if ix==0: return 0
  res=val[ind][ix-1]
  delta=x-rng[ind][ix-1][0]
  if rng[ind][ix-1][1]>0:
    res+=delta*rng[ind][ix-1][1]
  return res

best=0
bestcase=""
sol=[]
def cmp(case, cr,cand,icr,delta):
  global best, bestcase,sol
  if cand>=0 and delta>=0:
    if cr+cand>=icr+delta:
      if cr+cand<=m:
        if cr<=icr:
          if cr>=0:  
            d=csum(cr+cand,0)-csum(cr,0)+csum(cr+cand,1)-csum(cr,1)
            if d>best:
              for j in range(2):
                s=csum(icr+delta,j)-csum(icr,j)
                if d-s>best:
                  best=d-s
                  bestcase=case[:]
                  sol=[cr,icr,icr+delta,cr+cand]

def cmpd(case, d, cr,cand,icr,delta):
  global best, bestcase,sol
  if delta>=0:
    if cr+cand>=icr+delta:
      if cr<=icr:
        for j in range(2):
          s=csum(icr+delta,j)-csum(icr,j)
          if d-s>best:
            best=d-s
            bestcase=case[:]
            sol=[cr,icr,icr+delta,cr+cand]

for i in range(len(ch)):  
  cr=ch[i]
  for j in range(i+1,len(ch)):
    icr=ch[j]
    #  |-------- cand
    #       |--- delta
    delta=x-2*(icr-cr)
    cand=x-(icr-cr)
    cmp("1",cr,cand,icr,delta)
    
    # |---| delta
    delta=(icr-cr)
    if x&1==delta&1:
      cand=(x+delta)/2
      for k in range(len(ch)-1):
        cmp("2",ch[k],cand,cr,delta)
        cmp("3",ch[k+1]-cand,cand,cr,delta)
    else:
      delta-=1
      cand=(x+delta)/2
      for k in range(len(ch)-1):
        cmp("4",ch[k],cand,icr-delta,delta)
        cmp("5",ch[k+1]-cand,cand,icr-delta,delta)
        cmp("6",ch[k],cand,cr,delta)
        cmp("7",ch[k+1]-cand,cand,cr,delta)
      cmp("8",icr-delta,cand,icr-delta,delta)
      cmp("9",icr-cand,cand,icr-delta,delta)
      
      cmp("10",cr+delta-cand,cand,cr,delta)
      cmp("11",cr,cand,cr,delta)
      delta+=2
      cand=(x+delta)/2
      for k in range(len(ch)-1):
        cmp("12",ch[k],cand,cr,delta)
        cmp("13",ch[k+1]-cand,cand,cr,delta)
        cmp("14",ch[k],cand,icr-delta,delta)
        cmp("15",ch[k+1]-cand,cand,icr-delta,delta)
      cmp("16",icr-delta,cand,icr-delta,delta)
      cmp("17",icr-cand,cand,icr-delta,delta)
      
      cmp("18",cr+delta-cand,cand,cr,delta)
      cmp("19",cr,cand,cr,delta)
    # |---| cand
    cand=(icr-cr)
    delta=2*cand-x
    if cr+cand<=m:
      d=csum(cr+cand,0)-csum(cr,0)+csum(cr+cand,1)-csum(cr,1)
      if d>best:
            
        for k in range(len(ch)-1):
          cmpd("20",d, cr,cand,ch[k],delta)
          cmpd("21",d, cr,cand,ch[k+1]-delta,delta)
      
  for j in range(i):
    icr=ch[j]
    #  --------| cand
    #  ---|      delta
    delta=x-2*(cr-icr)
    cand=x-(cr-icr)
    cmp("22",cr-cand,cand,icr-delta,delta)
  
  cmp("23",cr,x,cr,x)
  cmp("24",cr-x,x,cr-x,x)

print best                                          
#print bestcase+" "+str(best)+' '+" ".join(map(str,sol))
#print str(left)+'('+str(left in ch)+')'+' '+str(lefte)+'('+str(lefte in ch)+')'+' '+str(righte)+'('+str(righte in ch)+')'+' '+str(right)+'('+str(right in ch)+')'+':'+str(dir)
          