#include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n, k; cin>>n>>k; vector h(n); for(int &x : h) cin>>x; vector v(k), vc(k); for(int i = 0; i < k; i++) cin>>v[i]>>vc[i]; int maxE = *max_element(h.begin(), h.end()); if(maxE > k){ cout<<"0\n"; return 0; } vector> dpb; for(int i = 1; i <= maxE; i++){ vector ints; int last = -2; for(int j = 0; j < n; j++){ if(h[j] < i) continue; if(last+1 < j) ints.push_back(1); else ints.back()++; last = j; } /*cout<<"ints: "; for(auto p : ints) cout<> dp(1< v[l]) dp[j] = make_pair(dp[x].first, dp[x].second - v[l]); else if (dp[x].second == v[l]) dp[j] = make_pair(dp[x].first+1, dp[x].first+1 < (int)ints.size() ? ints[dp[x].first+1] : 0); } } dpb.push_back(vector(1< meg = dpb[0]; for(int i = 1; i < maxE; i++){ vector temp(1< 0; l = ((l-1)&x)) temp[j|l] = temp[j|l] || meg[l]; } swap(temp, meg); } int ki = 0; for(int i = 0; i < 1<