//#include<stdio.h>
//typedef struct
//{
// int send;
// int take;
// int num;
//}tac;
//
//int main()
//{
// int i, j, n, m, c, start = 1, bag = 0, end = 1, cnt = 0, q;
// tac arr[10001], k;
//
// scanf("%d %d %d", &n, &c, &m);
//
// for (i = 1 ; i <= m ; i ++)
// {
// scanf("%d %d %d", &arr[i].send, &arr[i].take, &arr[i].num);
// }
// for (i = 1 ; i < m ; i ++)
// {
// for (j = 1 ; j <= m - i ; j ++)
// {
// if (arr[j].send > arr[j + 1].send || (arr[j].send == arr[j + 1].send && arr[j].take > arr[j + 1].take))
// {
// k = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = k;
// }
// }
// }
// /////////////////////////
//
// for (i = 1 ; i <= n ; i ++)
// {
// printf("******%d마을에 도착\n\n", i);
// int x = arr[i].send;
// for (j = start ; arr[j].send == x ; j ++)
// {
// for (q = start ; q <= end ; q ++)
// {
// if (arr[q].take == i)
// {
// bag -= arr[q].num;
// cnt += arr[q].num;
// printf("(짐을 내림)현재 택배 양 : %d\n내린 짐의 양 : %d\n현재까지 내린 짐의 합 : %d\n\n", bag, arr[q].num, cnt);
// }
// }
//
// if (bag == c)
// {
// printf("%d마을 떠남\n", i);
// start = end;
// end = j;
// break;
// }
// if (bag + arr[j].num <= c)
// {
// bag += arr[j].num;
// printf("(짐을 추가함)추가한 짐 : %d\n\n", bag);
// }
// else
// {
// int y = c - bag;
// bag = c;
// arr[j].num -= y;
// printf("(짐을 추가함)추가한 짐 : %d\n\n", bag);
// }
// }
// }
//
// printf("%d", cnt);
//
// return 0;
//}
#include<stdio.h>
int main()
{
int i, j, n, c, m, a, b, c, truck = 0, q;
int arr[10001][10001] = {};
scanf("%d %d %d", &n, &c, &m);
for (i = 1 ; i <= m ; i ++)
{
scanf("%d %d %d", &a, &b, &c);
arr[a][b] = c;
}
for (i = 1 ; i <= m ; i ++)
{
//1. 짐싣기
for (j = i+1 ; j <= m ; j ++)
{
if(truck==c)
{
arr[i][j]=0;
}
if (truck+arr[i][j]<=c) //안넘는다면
{
truck+=arr[i][j];
}
else if(truck+arr[i][j]>c)
{
int x = c-truck;
arr[i][j]=x;
truck=c;
}
}
//2. 짐 내리기
for (q = 1 ; q <= m ; q ++)
{
truck -= arr[q][j];
}
}
return 0;
}