璀璨光滑
时间限制:C/C++/Rust/Pascal 6秒,其他语言12秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

终于活成了自己讨厌的样子。
有一张2n的点的图,这个图上每个点标上了0到2n-1之间不同的数字。记pi为第i个点的标号,那么u和v之间连边当且仅当pu与pv的二进制表示恰好有一位不同。
现在告诉了你这张图,但是每个点的标号不见了,请找到一个字典序最小的标号方式,即先比较p1,如果相同的话比较p2,依次类推。

输入描述:

第一行一个整数T(T≤ 1000),表示数据组数。
接下来一行每行一个正整数n,m(n≤ 18),表示有2n个点m条边,接下来若干行表示边,没有重边没有自环,保证有解。
保证

输出描述:

对于每组数据,输出一行,2n个0到2n-1个不同的数。
示例1

输入

复制
1
2 4
1 3
1 4
3 2
4 2

输出

复制
0 3 1 2