#include "fish.h"
//ᴇᴀᴄʜ ᴘᴇʀꜱᴏɴ ᴡɪʟʟ ᴏɴʟʏ ʜᴀᴠᴇ ᴡʜᴀᴛ ᴛʜᴇʏ ᴇɴᴅᴇᴀᴠᴏᴜʀᴇᴅ ᴛᴏᴡᴀʀᴅꜱ [53:39]
//ꜰᴏʀ ɪɴᴅᴇᴇᴅ, ᴡɪᴛʜ ʜᴀʀᴅꜱʜɪᴘ ᴄᴏᴍᴇꜱ ᴇᴀꜱᴇ. ɪɴᴅᴇᴇᴅ, ᴡɪᴛʜ ʜᴀʀᴅꜱʜɪᴘ ᴄᴏᴍᴇꜱ ᴇᴀꜱᴇ. [94:5–6]
//Author: Sazid Hasan (@iamsazidh)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double dl;
typedef vector<int> vi;
typedef vector<vector<int>> vii;
typedef vector<ll> vl;
typedef vector<bool> vb;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
#define ff first
#define ss second
#define all(a) a.begin(),a.end()
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))
#define spc " "
#ifdef ONLINE_JUDGE
#define debarr(array)
#define deb(x)
#define del
#else
#define debarr(array) for(int w = 0; w < array.size(); w++) cerr << #array << "-" << w << " = " << array[w] << endl;
#define deb(x) cerr << #x << " = " << x << endl;
#define del cerr << '\n';
#endif
const double PI = acos(-1);
const int MOD = 1000000007;
const int inf = (2147483647);
#include <vector>
long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) {
vl arr(N+5);
for(int i = 0; i < M; i++) arr[X[i]] += W[i];
vector<pll> dp(N+5);
ll ans = 0;
for(int i = 1; i < N; i++){
dp[i] = { max(dp[i-1].ff, dp[i-1].ss + arr[i]) ,
max( (i>1 ? max(dp[i-2].ff, dp[i-2].ss) : 0) + arr[i-1], dp[i-1].ss) };
ans = max({ans, dp[i].ff, dp[i].ss});
}
return ans;
}