#include using namespace std; int main(){ int N, M; cin >> N >> M; vector A(N); for(int i=0; i> A[i]; vector X(M), W(M); for(int i=0; i> X[i] >> W[i], X[i]--; int64_t sum = accumulate(W.begin(), W.end(), 0LL); if(sum < *min_element(A.begin(), A.end())){ cout << 0 << endl; return 0; } auto check = [&](int64_t C)->bool{ vector imos(N+2); for(int i=0; i= A[i]) return false; return true; }; int ok = 1e9, ng = 0; while(ok-ng>1){ int mid = (ok+ng)/2; (check(mid) ? ok : ng) = mid; } int ans = ok; if(ans == 1e9) ans = -1; cout << ans << endl; return 0; }