#include <bits/stdc++.h>
using namespace std;
const int INF = (1 << 30) - 1;
const long long oo = (1ll << 62) - 1;
const long double PI = 3.1415926535898;
const int N = 1000000 + 5;
int n, m;
vector<int> a[N], e[N];
int num[N], low[N], vt[N], dd[N];
int Time = 0, tpltm = 0;
stack<int> s;
vector<int> res1, res2;
void minimize(int &a, int b) {
  if (a > b) a = b;
}
void dfs(int u) {
  num[u] = low[u] = ++Time;
  s.push(u);
  for (int v : a[u]) {
    if (num[v] == -2) continue;
    if (num[v] > 0) {
      minimize(low[u], num[v]);
    } else {
      dfs(v);
      minimize(low[u], low[v]);
    }
  }
  if (low[u] >= num[u]) {
    tpltm += 1;
    int v;
    do {
      v = s.top();
      s.pop();
      vt[v] = tpltm;
      num[v] = -2;
    } while (v != u);
  }
}
void solve() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) a[i].clear();
  for (int i = 1; i <= m; i++) {
    int u, v;
    cin >> u >> v;
    if (u == v) continue;
    a[u].push_back(v);
  }
  Time = 0;
  tpltm = 0;
  while (s.size()) s.pop();
  for (int i = 1; i <= n; i++) num[i] = 0;
  for (int i = 1; i <= n; i++) {
    if (num[i]) continue;
    dfs(i);
  }
  if (tpltm <= 1) {
    cout << "No" << '\n';
    return;
  }
  for (int i = 1; i <= tpltm; i++) e[i].clear();
  for (int u = 1; u <= n; u++) {
    for (int v : a[u]) {
      if (vt[u] == vt[v]) continue;
      e[vt[u]].push_back(vt[v]);
    }
  }
  int gt = INF, dinh = 0;
  for (int i = 1; i <= tpltm; i++) {
    if (e[i].size() < gt) {
      gt = e[i].size();
      dinh = i;
    }
  }
  res1.clear();
  res2.clear();
  for (int i = 1; i <= n; i++) {
    if (vt[i] == dinh) {
      res1.push_back(i);
    } else
      res2.push_back(i);
  }
  if (res1.size() == 0 || res2.size() == 0) {
    cout << "No" << '\n';
    return;
  }
  cout << "Yes" << '\n';
  cout << res1.size() << " " << res2.size() << '\n';
  for (int i = 0; i < res1.size(); i++) cout << res1[i] << " ";
  cout << '\n';
  for (int i = 0; i < res2.size(); i++) cout << res2[i] << " ";
  cout << '\n';
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int t;
  cin >> t;
  for (int i = 1; i <= t; i++) solve();
}
