#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
 
using namespace __gnu_pbds;
using namespace std;
 
typedef tree<int, null_type, less<int>, rb_tree_tag,
        tree_order_statistics_node_update>
        new_data_set;
 
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define PSET(x,y) fixed<<setprecision(y)<<x
#define pb push_back
#define pf push_front
#define pii pair<int,int>
#define mp make_pair
#define vi vector<int>
#define vip vector<pair<int,int> >
#define ff first
#define ss second
#define int long long
#define SIZE 200010
#define mod 1000000007
#define BIG 998244353
#define s(t) scanf("%d",&t)
#define p(t) printf("%d\n",t)
#define mii map<int,int>
#define MSET(table,i) memset(table, i, sizeof(table))
#define endl '\n'
#define tc int t;cin>>t;while(t--)
#define pi  3.1415926358
#define print(x) for(auto el: x) cout<<el<<" ";cout<<endl
#define bits(x) __builtin_popcount(x)
#define minimum(a,n) min_element(a,a+n)-a
#define maximum(a,n) max_element(a,a+n)-a
#define pqbig priority_queue<int>
#define pqsmall priority_queue<int,vector<int>,greater<int> >
#define all(v) v.begin(),v.end()
#define sitr set<int>:: iterator
#define mitr map<int,int>:: iterator
 
#define trace1(x)                cerr<<#x<<": "<<x<<endl
#define trace2(x, y)             cerr<<#x<<": "<<x<<" | "<<#y<<": "<<y<<endl
#define trace3(x, y, z)          cerr<<#x<<":" <<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<endl
#define trace4(a, b, c, d)       cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl
#define trace5(a, b, c, d, e)    cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<endl
#define trace6(a, b, c, d, e, f) cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<" | "<<#f<<": "<<f<<endl
 
const int N=3e5+5;
int arr[N];
vip v;

int32_t main()
{
    fast;
    tc
    {
        v.clear();
        int n,m;cin>>n>>m;
        for(int i=1;i<=3*n;i++)
            arr[i]=0;

        for(int i=0;i<m;i++)
        {
            int x,y;cin>>x>>y;
            v.pb(mp(x,y));
        }


        vi matching;
        for(int i=0;i<m;i++)
        {
            if(arr[v[i].ff] or arr[v[i].ss])
                continue;

            matching.pb(i+1);
            arr[v[i].ff]=1;
            arr[v[i].ss]=1;
            if(matching.size()==n)
                break;
        }
        if(matching.size()>=n)
        {
            cout<<"Matching"<<endl;
            for(int i=0;i<n;i++)
                cout<<matching[i]<<' ';
            cout<<endl;
            continue;
        }
        cout<<"Indset"<<endl;
        vi independent;
        for(int i=1;i<3*n+1;i++)
        {
            if(arr[i])
                continue;
            independent.pb(i);
        }
        for(int i=0;i<n;i++)
            cout<<independent[i]<<' ';
        cout<<endl;
    }
}   