#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
int a[5000001];
int tag[5000001],L[50001],R[50001],sum[50001],lz[50001];
inline void Change(int l,int r,int k)
{
if(tag[l] == tag[r])
{
for(int i = l; i <= r; i ++)
{
a[i] += k;
sum[tag[i]] += k;
}
return;
}
for(int i = l; i <= R[tag[l]]; i ++)
{
a[i] += k;
sum[tag[i]] += k;
}
for(int i = tag[l] + 1; i < tag[r]; i ++)
{
lz[i] += k;
sum[i] += (R[i] - L[i] + 1) * k;
}
for(int i = L[tag[r]]; i <= r; i ++)
{
a[i] += k;
sum[tag[i]] += k;
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
int len = sqrt(n);
for(int i = 1; i <= n; i ++)
tag[i] = (i - 1) / len + 1;
for(int i = 1; i <= tag[n]; i ++)
{
L[i] = R[i - 1] + 1;
R[i] = min(n,L[i] + len - 1);
}
for(int i = 1; i <= n; i ++) cin>>a[i];
for(int i = 1; i <= tag[n]; i ++)
for(int j = L[i]; j <= R[i]; j ++)
sum[i] += a[j];
for(int i = 1; i <= m; i ++)
{
int l,r,k;
cin>>l>>r>>k;
Change(l,r,k);
}
int minn = INT_MAX;
for(int i {1}; i<=n; i++)
minn = min(a[i] + lz[tag[i]],minn);
cout<<minn;
return 0;
}