#include <bits/stdc++.h>
using namespace std;
string to_string(string s) { return "\"" + s + "\""; }
template <typename T>
string to_string(vector<T>);
template <typename U, typename V>
string to_string(pair<U, V> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename T>
string to_string(vector<T> v) {
  string res = "[";
  for (int i = 0; i < (int)v.size() - 1; i++) res += to_string(v[i]) + ", ";
  if (!v.empty()) res += to_string(v.back());
  res += "]";
  return res;
}
int n, m, l, r;
int a[100100];
long long int f[100100];
long long int g[100100];
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
  }
  f[n] = n;
  g[n] = n;
  for (int i = n - 1; i >= 1; i--) {
    if (a[i] <= a[i + 1]) {
      f[i] = f[i + 1];
    } else
      f[i] = g[i + 1];
    if (a[i] >= a[i + 1])
      g[i] = g[i + 1];
    else
      g[i] = i;
  }
  while (m--) {
    scanf("%d %d", &l, &r);
    printf("%s\n", (f[l] >= r) ? "Yes" : "No");
  }
}
