#include <bits/stdc++.h>
using namespace std;
int dirx[8] = {0, 0, 1, -1, 1, 1, -1, -1};
int diry[8] = {1, -1, 0, 0, 1, -1, 1, -1};
string tostring(long long n) {
  if (!n) return "0";
  string ans = "";
  while (n != 0) {
    ans += (n % 10) + '0';
    n /= 10;
  }
  reverse(ans.begin(), ans.end());
  return ans;
}
double toDouble(string s) {
  double ans = 0;
  int i = 0, flag = 0, cnt = 0, ff = 1;
  while (i < s.length()) {
    if (s[i] == '-') {
      ff = -1;
      i++;
      continue;
    }
    if (s[i] == '.') {
      flag = 1;
      i++;
      continue;
    }
    ans *= 10;
    ans += s[i] - '0';
    if (flag) cnt++;
    i++;
  }
  ans *= ff;
  return ans / pow(10, cnt);
}
bool isPrime(long long n) {
  for (long long i = 2; i * i <= n; i++) {
    if (n % i == 0) return false;
  }
  return true;
}
int main() {
  int tc;
  long long a, b;
  cin >> tc;
  while (tc--) {
    cin >> a >> b;
    if (isPrime(a + b) && a - b == 1)
      cout << "YES\n";
    else
      cout << "NO\n";
  }
  return 0;
}
