#include <bits/stdc++.h>
using namespace std;
mt19937 mt_rand(
    chrono::high_resolution_clock::now().time_since_epoch().count());
const int INF = 2e9;
const long long ML = 4e18;
long long Pow(long long x, int p) {
  long long res = 1;
  while (p) {
    if (p & 1) res = (res * x) % 998244353;
    x = (x * x) % 998244353;
    p >>= 1;
  }
  return res;
}
void solve() {
  int n, q;
  cin >> n >> q;
  vector<int> ax(n);
  for (int i = (0); i < (n); ++i) cin >> ax[i];
  sort((ax).begin(), (ax).end());
  vector<long long> sum(n + 1, 0);
  for (int i = (1); i < (n + 1); ++i) {
    sum[i] = sum[i - 1] + ax[i - 1];
    sum[i] %= 998244353;
  }
  long long inv = Pow(n, 998244353 - 2);
  for (int i = (0); i < (q); ++i) {
    int a, b;
    cin >> a >> b;
    int p = lower_bound((ax).begin(), (ax).end(), b) - ax.begin();
    int big = n - p, small = p;
    if (big < a) {
      cout << 0 << endl;
      continue;
    } else {
      long long bs = (sum[n] - sum[p] + 998244353) % 998244353, sm = sum[p];
      long long ans =
          bs * (big - a) % 998244353 * Pow(big, 998244353 - 2) % 998244353;
      ans = (ans + sm * (big + 1 - a) % 998244353 *
                       Pow(big + 1, 998244353 - 2) % 998244353) %
            998244353;
      cout << ans << endl;
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  solve();
  return 0;
}
