#include using namespace std; #define rep(i,a,b) for(ll i=a;i=b;i--) #define ll long long #define ull unsigned ll #define ld long double #define bl __int128_t #define fi first #define se second #define vel vector #define vvel vector #define pll pair #define vepll vector #define vvepll vector #define ves vector #define vem vector #define vvem vector #define pmm pair #define vepmm vector #define cleout(i) cout<using PQ=priority_queue,greater>; // 上 右 下 左 vector di={-1, 0, 1, 0}; vector dj={ 0, 1, 0,-1}; vector dx={ 0, 1, 0,-1}; vector dy={ 1, 0,-1, 0}; vector ddx={ 1, 1, 1, 0, -1, -1, -1, 0 }; vector ddy={ 1, 0, -1, -1, -1, 0, 1, 1 }; ll inf=1000000000000000000;//1e18 // LLONG_MAX mt19937_64 rng((ull)chrono::steady_clock::now().time_since_epoch().count()); //[x^M]1/(1-x)^N=comb(N-1+M,M) bool check(pll s,pll t){ if(s.fi==t.fi||s.se==t.se||(s.fi+s.se)==(t.fi+t.se)||(s.fi-s.se)==(t.fi-t.se))return 1; return 0; } void _solve(){ ll H,W,x,y,N; cin>>H>>W>>x>>y>>N; vepll a(N+1); a[0]={x,y}; vel c(N+1); rep(i,1,N+1)cin>>a[i].fi>>a[i].se>>c[i]; vel dp(N+1,-inf); dp[0]=0; dp[1]=0; rep(i,1,N+1){ if(check(a[i-1],a[i])){ dp[i]=max(dp[i],dp[i-1]+c[i]); } if(i>1)dp[i]=max(dp[i],dp[i-2]+c[i]); } ll ans=-inf; rep(i,0,N+1)ans=max(ans,dp[i]); cout<>_; else _=1; rep(__,0,_){ _solve(); } }