#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using ULL = unsigned long long;
const double PI = acos(-1);
template <class T>
constexpr T INF() {
  return ::std::numeric_limits<T>::max();
}
template <class T>
constexpr T HINF() {
  return INF<T>() / 2;
}
template <typename T_char>
T_char TL(T_char cX) {
  return tolower(cX);
};
template <typename T_char>
T_char TU(T_char cX) {
  return toupper(cX);
};
const int vy[] = {-1, -1, -1, 0, 1, 1, 1, 0},
          vx[] = {-1, 0, 1, 1, 1, 0, -1, -1};
const int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
int popcnt(unsigned long long n) {
  int cnt = 0;
  for (int i = 0; i < 64; i++)
    if ((n >> i) & 1) cnt++;
  return cnt;
}
int d_sum(LL n) {
  int ret = 0;
  while (n > 0) {
    ret += n % 10;
    n /= 10;
  }
  return ret;
}
int d_cnt(LL n) {
  int ret = 0;
  while (n > 0) {
    ret++;
    n /= 10;
  }
  return ret;
}
LL gcd(LL a, LL b) {
  if (b == 0) return a;
  return gcd(b, a % b);
};
LL lcm(LL a, LL b) {
  LL g = gcd(a, b);
  return a / g * b;
};
int t;
int n, m;
void solve() {
  cin >> n >> m;
  vector<int> v[3 * n];
  vector<pair<int, int>> p;
  vector<int> ma, in;
  vector<int> isok_in(3 * n, true), isok_ma(3 * n, true);
  for (LL i = (0); i < (m); i++) {
    int a, b;
    cin >> a >> b;
    a--, b--;
    v[a].emplace_back(b);
    v[b].emplace_back(a);
    p.emplace_back(make_pair(a, b));
  }
  for (LL i = (0); i < (m); i++) {
    int a = p[i].first, b = p[i].second;
    if (isok_ma[a] && isok_ma[b]) {
      isok_ma[a] = false;
      isok_ma[b] = false;
      ma.emplace_back(i);
    }
  }
  if ((int)ma.size() >= n) {
    cout << "Matching" << endl;
    for (LL i = (0); i < (n); i++) {
      if (i) cout << " ";
      cout << ma[i] + 1;
    }
    cout << endl;
    return;
  }
  cout << "IndSet" << endl;
  for (LL i = (0); i < (3 * n); i++) {
    if (isok_ma[i]) {
      in.emplace_back(i);
      isok_in[i] = false;
      for (LL j = (0); j < ((int)v[i].size()); j++) {
        isok_in[v[i][j]] = false;
      }
    }
  }
  for (LL i = (0); i < (m); i++) {
    int a = p[i].first, b = p[i].second;
    if (isok_in[a]) {
      in.emplace_back(a);
      isok_in[a] = false;
      continue;
    }
    if (isok_in[b]) {
      in.emplace_back(b);
      isok_in[b] = false;
      continue;
    }
  }
  for (LL i = (0); i < (n); i++) {
    if (i) cout << " ";
    cout << in[i] + 1;
  }
  cout << endl;
  return;
}
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);
  cin >> t;
  for (LL ttt = (0); ttt < (t); ttt++) {
    solve();
  }
}
