#include using namespace std; int main() { int n, m, _; cin >> n >> m; if(m > n * (n - 1) / 2) return cout << "no\n", 0; multiset w; vector ok(n, true); vector x(n); for(auto &y : x) cin >> y; while(m--) cin >> _, w.insert(_); for(int d = 1; d < n; ++d) { // This will run at most sqrt(2m) times. bool done = true; for(int i = 0; i + d < n; ++i) if(ok[i]) { auto it = w.lower_bound(x[i + d] - x[i]); if(it != w.end()) { w.erase(it); if(w.empty()) return cout << "yes\n", 0; done = false; } else ok[i] = false; } if(done) break; } cout << "no\n"; }