#include <bits/stdc++.h>
using namespace std;
inline long long rd() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
char chhh[200];
inline void rt(long long x) {
  long long cnt = 0, tmp = x > 0 ? x : -x;
  if (!x) {
    putchar('0');
    return;
  }
  if (x < 0) putchar('-');
  while (tmp > 0) {
    chhh[cnt++] = tmp % 10 + '0';
    tmp /= 10;
  }
  while (cnt > 0) putchar(chhh[--cnt]);
}
long long f[200010];
vector<long long> e1[200010], e2[200010], out;
signed main() {
  long long t;
  t = rd();
  while (t--) {
    long long n = rd(), m = rd();
    out.clear();
    for (long long i = (1); i <= (n); i++)
      e1[i].clear(), e2[i].clear(), f[i] = 0;
    for (long long i = (1); i <= (m); i++) {
      long long u = rd(), v = rd();
      e1[u].push_back(v);
      e2[v].push_back(u);
    }
    for (long long i = (1); i <= (n); i++) {
      long long siz = e2[i].size();
      for (long long j = (0); j <= (siz - 1); j++) {
        long long v = e2[i][j];
        if (f[v] < 2) f[i] = max(f[i], f[v] + 1);
      }
      if (f[i] == 2) out.push_back(i);
    }
    long long s = out.size();
    rt(s);
    putchar('\n');
    for (long long i = (0); i <= (s - 1); i++) {
      rt(out[i]);
      putchar(' ');
    }
    putchar('\n');
  }
  return 0;
}
