#include <iostream.h>

void main(void) {

	int numDataSet;
	int numGuest;
	int numCond;

	int taller;
	int shorter;

	cin >> numDataSet;

	for (int i=0;i<numDataSet;i++) {

		cin >> numGuest;
		cin >> numCond;

		int* guest = new int[numGuest];
		int flag;

		int** info = new int*[numGuest];
		for (int y=0;y<numGuest;y++) {
			info[y] = new int[numGuest];
		}

		for (int n=0;n<numGuest;n++) {
			guest[n] = 0;
			for (int p=0;p<numGuest;p++) {
				info[n][p]=0;
			}
		}

		flag = 0;

		cout << "Data set " << i+1 << ": " << endl;


		for (int j=0;j<numCond;j++) {

			int height;

			cin >> taller;
			cin >> shorter;

			taller--;
			shorter--;

			height = guest[shorter];

			info[shorter][taller] = 1;

			if ((guest[shorter]!=0) && (guest[shorter]>guest[taller])) {

				cout << "Data inconsistent." << endl;
				flag = 1;
				break;

			}
			else {

				if (guest[taller] < (guest[shorter] + 1)) {

					guest[taller] = guest[shorter] + 1;

					// update info

					for (int q=0;q<numGuest;q++) {
						for (int c=0;c<numGuest;c++) {
							for (int s=0;s<numGuest;s++) {
								if (info[c][s] == 1) {
									if (guest[s] < guest[c]+1) {
										guest[s] = guest[c]+1;
									}
								}
							}
						}
					}


				}

			}
		

		}

		// check duplicate rank
		if (flag==0) {
			
			for (int k=0; k<numGuest-1; k++) {

				for (int m=k+1; m<numGuest; m++) {

					if (guest[k] == guest[m]) {

						flag = 1;
						break;

					}
				}
			}

			if (flag==1) {
				cout << "Not enough Information.\n";
			}

		}


		
		// output the result

		if (flag == 0) {

			for (int k=0;k<numGuest;k++) {

				for (int m=0; m<numGuest; m++) {

					if (guest[m] == k) {

						cout << m+1 << " ";
					}

				}

			}
		}

		cout << endl;

	}

}


			



