// 2013/11/09 Tazoe

#include <iostream>
#include <algorithm>
#include <cstdlib>
using namespace std;

int main()
{
	int D, N;
	cin >> D >> N;

	int T[200];
	for(int i=0; i<D; i++){
		cin >> T[i];
	}

	int A[200], B[200], C[200];
	for(int i=0; i<N; i++){
		cin >> A[i] >> B[i] >> C[i];
	}

	bool S[200][200];
	for(int i=0; i<D; i++){
		for(int j=0; j<N; j++){
			S[i][j] = (A[j]<=T[i] && T[i]<=B[j]);
		}
	}

	int DP[200][200];
	for(int i=0; i<D; i++){
		for(int j=0; j<N; j++){
			DP[i][j] = -1;
		}
	}

	for(int j=0; j<N; j++){
		if(S[0][j]){
			DP[0][j] = 0;
		}
	}

	for(int i=1; i<D; i++){
		for(int j=0; j<N; j++){
			if(!S[i][j])
				continue;

			for(int k=0; k<N; k++){
				if(!S[i-1][k])
					continue;

				DP[i][j] = max(DP[i][j], DP[i-1][k]+abs(C[k]-C[j]));
			}
		}
	}

	int ans = -1;
	for(int j=0; j<N; j++){
		ans = max(ans, DP[D-1][j]);
	}

	cout << ans << endl;

	return 0;
}