에너지를 유지하라

각 레벨 상점에서 에너지 팩을 사서 모든 레벨을 순서대로 가장 적은 현금으로 통과합니다.

보통7동적 계획법세그먼트 트리누적 합이분 탐색아직 제출이 없습니다시간 제한3초메모리 제한256 MB

문제

게임 회사가 새 게임기와 함께 내놓는 게임 Adventures of Captain Mikado를 만들고 있다. 이 게임에는 레벨이 NN개 있고 11번부터 NN번까지 번호가 붙어 있다. ii번 레벨을 깨려면 에너지가 정확히 EiE_i만큼 든다. 즉 ii번 레벨을 시작하는 시점의 에너지가 EiE_i 이상이어야 하고, 레벨을 깨고 나면 에너지가 정확히 EiE_i만큼 줄어든다. 게임을 이기려면 11번 레벨부터 NN번 레벨까지 번호 순서대로 모두 깨야 하고, 이미 깬 레벨로 되돌아갈 수 없다.

플레이어는 에너지 00으로 시작한다. 에너지는 레벨 곳곳에 흩어져 있는 상점 MM개에서 에너지 팩을 사서 얻는다. 상점마다 강도가 SS이고 가격이 CC인 에너지 팩을 한 종류 판다. 플레이어는 지금 있는 레벨의 상점에서만, 그 레벨을 시작하기 전에 에너지 팩을 살 수 있다. 강도가 SS인 팩을 사면 직전 에너지가 얼마였든 에너지가 곧바로 SS가 된다.

레벨 NN개를 모두 깨는 데 드는 게임 내 화폐의 최솟값을 구하라.

입력

첫째 줄에 레벨 수 NN과 상점 수 MM이 주어진다 (1N,M1051 \le N, M \le 10^5).

둘째 줄에 정수 NNE1,E2,,ENE_1, E_2, \dots, E_N이 주어진다. EiE_iii번 레벨을 깨는 데 드는 에너지이다 (1Ei1041 \le E_i \le 10^4).

다음 MM개 줄에는 상점 하나를 나타내는 정수 LL, SS, CC가 주어진다. LL은 상점이 있는 레벨 번호, SSCC는 그 상점이 파는 에너지 팩의 강도와 가격이다 (1LN1 \le L \le N, 1S1091 \le S \le 10^9, 1C1041 \le C \le 10^4).

출력

레벨 NN개를 모두 깨는 데 필요한 게임 내 화폐의 최솟값을 한 줄에 출력한다. 모든 레벨을 깨는 것이 불가능하면 -1을 출력한다.