에너지를 유지하라
시간 제한3초메모리 제한256 MB
각 레벨 상점에서 에너지 팩을 사서 모든 레벨을 순서대로 가장 적은 현금으로 통과합니다.
문제
게임 회사가 새 게임기와 함께 내놓는 게임 Adventures of Captain Mikado를 만들고 있다. 이 게임에는 레벨이 개 있고 번부터 번까지 번호가 붙어 있다. 번 레벨을 깨려면 에너지가 정확히 만큼 든다. 즉 번 레벨을 시작하는 시점의 에너지가 이상이어야 하고, 레벨을 깨고 나면 에너지가 정확히 만큼 줄어든다. 게임을 이기려면 번 레벨부터 번 레벨까지 번호 순서대로 모두 깨야 하고, 이미 깬 레벨로 되돌아갈 수 없다.
플레이어는 에너지 으로 시작한다. 에너지는 레벨 곳곳에 흩어져 있는 상점 개에서 에너지 팩을 사서 얻는다. 상점마다 강도가 이고 가격이 인 에너지 팩을 한 종류 판다. 플레이어는 지금 있는 레벨의 상점에서만, 그 레벨을 시작하기 전에 에너지 팩을 살 수 있다. 강도가 인 팩을 사면 직전 에너지가 얼마였든 에너지가 곧바로 가 된다.
레벨 개를 모두 깨는 데 드는 게임 내 화폐의 최솟값을 구하라.
입력
첫째 줄에 레벨 수 과 상점 수 이 주어진다 ().
둘째 줄에 정수 개 이 주어진다. 는 번 레벨을 깨는 데 드는 에너지이다 ().
다음 개 줄에는 상점 하나를 나타내는 정수 , , 가 주어진다. 은 상점이 있는 레벨 번호, 와 는 그 상점이 파는 에너지 팩의 강도와 가격이다 (, , ).
출력
레벨 개를 모두 깨는 데 필요한 게임 내 화폐의 최솟값을 한 줄에 출력한다. 모든 레벨을 깨는 것이 불가능하면 -1을 출력한다.