문제
정점 $N$개와 간선 $N-1$개로 이루어진 트리 $T$가 주어진다. 정점은 1ドル$번부터 $N$번까지 번호가 매겨져 있고, 간선은 1ドル$번부터 $(N-1)$번까지 번호가 매겨져 있다.
$T$의 모든 정점을 $D$차원 정수 격자 $\mathbb{Z}^D$ 위의 점으로 이사시키고자 한다. 이때, 이사된 정점들의 위치는 다음 조건을 만족해야 한다.
- $i$번 정점이 이사된 위치를 $(x_{i,1},x_{i,2},\cdots ,x_{i,D})$라 하자. $x_{i,j}$는 정수이다.
- 트리에서 $i$번 정점과 $j$번 정점의 거리 $\text{dist}(i,j)$를 $i$번 정점에서 $j$번 정점으로 가는 경로에 있는 간선의 수로 정의하자.
- 모든 1ドル\le i<j\le N$에 대해서 $|x_{i,1}-x_{j,1}|+|x_{i,2}-x_{j,2}|+\cdots +|x_{i,D}-x_{j,D}|=\text{dist}(i,j)$여야 한다.
트리를 이사할 수 있는 최소 차원 $D$를 구하고, 조건을 만족하도록 정점들을 이사시키자.
출력
첫째 줄에 트리를 이사할 수 있는 최소 차원 $D$를 출력한다.
이후 $N$개의 줄에 걸쳐, 그중 $i$번째 줄에 $D$개의 정수 $x_{i,j}$를 공백으로 구분해 출력한다. (1ドル\le j\le D$)
$x_{i,j}$는 $i$번 정점이 이사되는 격자점의 $j$번째 좌표를 의미하며 $-10^9\le x_{i,j}\le 10^9$이어야 한다.
트리를 여러 방법으로 이사시킬 수 있는 경우 그중 아무 것이나 출력한다.
예제 출력 1
2
0 0
-1 0
1 0
0 -1
0 1
W3sicHJvYmxlbV9pZCI6IjM0MDg2IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVkMmI4XHViOWFjIFx1Yzc3NFx1YzBhYyIsImRlc2NyaXB0aW9uIjoiPHA+XHVjODE1XHVjODEwICROJFx1YWMxY1x1YzY0MCBcdWFjMDRcdWMxMjAgJE4tMSRcdWFjMWNcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0IFx1ZDJiOFx1YjlhYyAkVCRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWM4MTVcdWM4MTBcdWM3NDAgJDEkXHViYzg4XHViZDgwXHVkMTMwICROJFx1YmM4OFx1YWU0Y1x1YzljMCBcdWJjODhcdWQ2MzhcdWFjMDAgXHViOWU0XHVhY2E4XHVjODM4IFx1Yzc4OFx1YWNlMCwgXHVhYzA0XHVjMTIwXHVjNzQwICQxJFx1YmM4OFx1YmQ4MFx1ZDEzMCAkKE4tMSkkXHViYzg4XHVhZTRjXHVjOWMwIFx1YmM4OFx1ZDYzOFx1YWMwMCBcdWI5ZTRcdWFjYThcdWM4MzggXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48cD4kVCRcdWM3NTggXHViYWE4XHViNGUwIFx1YzgxNVx1YzgxMFx1Yzc0NCAkRCRcdWNjMjhcdWM2ZDAgXHVjODE1XHVjMjE4IFx1YWNhOVx1Yzc5MCAkXFxtYXRoYmJ7Wn1eRCQgXHVjNzA0XHVjNzU4IFx1YzgxMFx1YzczY1x1Yjg1YyBcdWM3NzRcdWMwYWNcdWMyZGNcdWQwYTRcdWFjZTBcdWM3OTAgXHVkNTVjXHViMmU0LiBcdWM3NzRcdWI1NGMsIFx1Yzc3NFx1YzBhY1x1YjQxYyBcdWM4MTVcdWM4MTBcdWI0ZTRcdWM3NTggXHVjNzA0XHVjZTU4XHViMjk0IFx1YjJlNFx1Yzc0YyBcdWM4NzBcdWFjNzRcdWM3NDQgXHViOWNjXHVjODcxXHVkNTc0XHVjNTdjIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4kaSRcdWJjODggXHVjODE1XHVjODEwXHVjNzc0IFx1Yzc3NFx1YzBhY1x1YjQxYyBcdWM3MDRcdWNlNThcdWI5N2MgJCh4X3tpLDF9LHhfe2ksMn0sXFxjZG90cyAseF97aSxEfSkkXHViNzdjIFx1ZDU1OFx1Yzc5MC4gJHhfe2ksan0kXHViMjk0IFx1YzgxNVx1YzIxOFx1Yzc3NFx1YjJlNC48XC9saT5cclxuXHQ8bGk+XHVkMmI4XHViOWFjXHVjNWQwXHVjMTFjICRpJFx1YmM4OCBcdWM4MTVcdWM4MTBcdWFjZmMgJGokXHViYzg4IFx1YzgxNVx1YzgxMFx1Yzc1OCBcdWFjNzBcdWI5YWMgJFxcdGV4dHtkaXN0fShpLGopJFx1Yjk3YyAkaSRcdWJjODggXHVjODE1XHVjODEwXHVjNWQwXHVjMTFjICRqJFx1YmM4OCBcdWM4MTVcdWM4MTBcdWM3M2NcdWI4NWMgXHVhYzAwXHViMjk0IFx1YWNiZFx1Yjg1Y1x1YzVkMCBcdWM3ODhcdWIyOTQgXHVhYzA0XHVjMTIwXHVjNzU4IFx1YzIxOFx1Yjg1YyBcdWM4MTVcdWM3NThcdWQ1NThcdWM3OTAuPFwvbGk+XHJcblx0PGxpPlx1YmFhOFx1YjRlMCAkMVxcbGUgaSZsdDtqXFxsZSBOJFx1YzVkMCBcdWIzMDBcdWQ1NzRcdWMxMWMgJHx4X3tpLDF9LXhfe2osMX18K3x4X3tpLDJ9LXhfe2osMn18K1xcY2RvdHMgK3x4X3tpLER9LXhfe2osRH18PVxcdGV4dHtkaXN0fShpLGopJFx1YzVlY1x1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+XHVkMmI4XHViOWFjXHViOTdjIFx1Yzc3NFx1YzBhY1x1ZDU2MCBcdWMyMTggXHVjNzg4XHViMjk0IFx1Y2Q1Y1x1YzE4YyBcdWNjMjhcdWM2ZDAgJEQkXHViOTdjIFx1YWQ2Y1x1ZDU1OFx1YWNlMCwgXHVjODcwXHVhYzc0XHVjNzQ0IFx1YjljY1x1Yzg3MVx1ZDU1OFx1YjNjNFx1Yjg1ZCBcdWM4MTVcdWM4MTBcdWI0ZTRcdWM3NDQgXHVjNzc0XHVjMGFjXHVjMmRjXHVkMGE0XHVjNzkwLjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMCBcdWQyYjhcdWI5YWNcdWM3NTggXHVjODE1XHVjODEwIFx1YzIxOCAkTiRcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAoJDJcXGxlIE5cXGxlIDJcXCwgMDAwJCk8XC9wPlxyXG5cclxuPHA+XHVjNzc0XHVkNmM0ICROLTEkXHVhYzFjXHVjNzU4IFx1YzkwNFx1YzVkMCBcdWFjNzhcdWNjZDAsIFx1YWRmOFx1YzkxMSAkaSRcdWJjODhcdWM5ZjggXHVjOTA0XHVjNWQwXHViMjk0IFx1ZDJiOFx1YjlhY1x1Yzc1OCAkaSRcdWJjODggXHVhYzA0XHVjMTIwXHVjNzc0IFx1Yzc4N1x1YjI5NCBcdWI0NTAgXHVjODE1XHVjODEwIFx1YmM4OFx1ZDYzOFx1YWMwMCBcdWFjZjVcdWJjMzFcdWM3M2NcdWI4NWMgXHVhZDZjXHViZDg0XHViNDE4XHVjNWI0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWNjYWJcdWM5ZjggXHVjOTA0XHVjNWQwIFx1ZDJiOFx1YjlhY1x1Yjk3YyBcdWM3NzRcdWMwYWNcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjI5NCBcdWNkNWNcdWMxOGMgXHVjYzI4XHVjNmQwICREJFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc3NFx1ZDZjNCAkTiRcdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQwIFx1YWM3OFx1Y2NkMCwgXHVhZGY4XHVjOTExICRpJFx1YmM4OFx1YzlmOCBcdWM5MDRcdWM1ZDAgJEQkXHVhYzFjXHVjNzU4IFx1YzgxNVx1YzIxOCAkeF97aSxqfSRcdWI5N2MgXHVhY2Y1XHViYzMxXHVjNzNjXHViODVjIFx1YWQ2Y1x1YmQ4NFx1ZDU3NCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuICgkMVxcbGUgalxcbGUgRCQpPFwvcD5cclxuXHJcbjxwPiR4X3tpLGp9JFx1YjI5NCAkaSRcdWJjODggXHVjODE1XHVjODEwXHVjNzc0IFx1Yzc3NFx1YzBhY1x1YjQxOFx1YjI5NCBcdWFjYTlcdWM3OTBcdWM4MTBcdWM3NTggJGokXHViYzg4XHVjOWY4IFx1Yzg4Y1x1ZDQ1Y1x1Yjk3YyBcdWM3NThcdWJiZjhcdWQ1NThcdWJhNzAgJC0xMF45XFxsZSB4X3tpLGp9XFxsZSAxMF45JFx1Yzc3NFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1ZDJiOFx1YjlhY1x1Yjk3YyBcdWM1ZWNcdWI3ZWMgXHViYzI5XHViYzk1XHVjNzNjXHViODVjIFx1Yzc3NFx1YzBhY1x1YzJkY1x1ZDBhYyBcdWMyMTggXHVjNzg4XHViMjk0IFx1YWNiZFx1YzZiMCBcdWFkZjhcdWM5MTEgXHVjNTQ0XHViYjM0IFx1YWM4M1x1Yzc3NFx1YjA5OCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiS29yZWFuIn0seyJwcm9ibGVtX2lkIjoiMzQwODYiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJUcmVlIE1vdmluZyIsImRlc2NyaXB0aW9uIjoiPHA+QSB0cmVlICRUJCBjb25zaXN0aW5nIG9mICROJCB2ZXJ0aWNlcyBhbmQgJE4tMSQgZWRnZXMgaXMgZ2l2ZW4sIHdpdGggdmVydGljZXMgbnVtYmVyZWQgZnJvbSAkMSQgdG8gJE4kIGFuZCBlZGdlcyBudW1iZXJlZCBmcm9tICQxJCB0byAkKE4tMSkkLjxcL3A+XHJcblxyXG48cD5Zb3UgbmVlZCB0byBtb3ZlIGFsbCB0aGUgdmVydGljZXMgb2YgJFQkIHRvIHBvaW50cyBvbiBhICREJC1kaW1lbnNpb25hbCBpbnRlZ2VyIGdyaWQgJFxcbWF0aGJie1p9XkQkLiBUaGUgcG9pbnRzIHRoZSB2ZXJ0aWNlcyBhcmUgbW92ZWQgdG8gbXVzdCBzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uLjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPkxldCB0aGUgbmV3IHBvc2l0aW9uIG9mIHZlcnRleCAkaSQgYmUgJCh4X3tpLDF9LHhfe2ksMn0sXFxjZG90cyAseF97aSxEfSkkIGFmdGVyIG1vdmluZy4gJHhfe2ksan0kIGlzIGFuIGludGVnZXIuPFwvbGk+XHJcblx0PGxpPkxldCB0aGUgZGlzdGFuY2UgJFxcdGV4dHtkaXN0fShpLGopJCBiZXR3ZWVuIHZlcnRleCAkaSQgYW5kIHZlcnRleCAkaiQgYmUgdGhlIG51bWJlciBvZiBlZGdlcyBvbiB0aGUgcGF0aCBmcm9tIHZlcnRleCAkaSQgdG8gdmVydGV4ICRqJC48XC9saT5cclxuXHQ8bGk+Rm9yIGFsbCAkMVxcbGUgaSZsdDtqXFxsZSBOJCwgJHx4X3tpLDF9LXhfe2osMX18K3x4X3tpLDJ9LXhfe2osMn18K1xcY2RvdHMgK3x4X3tpLER9LXhfe2osRH18PVxcdGV4dHtkaXN0fShpLGopJCBtdXN0IGJlIHNhdGlzZmllZC48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5GaW5kIHRoZSBtaW5pbXVtIGRpbWVuc2lvbiAkRCQgcmVxdWlyZWQgdG8gbW92ZSB0aGUgdHJlZSZyc3F1bztzIHZlcnRpY2VzIHNhdGlzZnlpbmcgdGhlIGNvbmRpdGlvbiwgdGhlbiBtb3ZlIHRoZSB2ZXJ0aWNlcyBhcHByb3ByaWF0ZWx5LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+VGhlIGZpcnN0IGxpbmUgb2YgaW5wdXQgY29udGFpbnMgJE4kLCBkZW5vdGluZyB0aGUgbnVtYmVyIG9mIHZlcnRpY2VzIG9mIHRoZSB0cmVlLiAoJDJcXGxlIE5cXGxlIDJcXCwgMDAwJCk8XC9wPlxyXG5cclxuPHA+VGhlICRpJC10aCBvZiB0aGUgZm9sbG93aW5nICROLTEkIGxpbmVzIGNvbnRhaW5zIHR3byBzcGFjZS1zZXBhcmF0ZWQgaW50ZWdlcnMgZGVub3RpbmcgdGhlIHR3byB2ZXJ0aWNlcyBvZiB0aGUgdHJlZSBjb25uZWN0ZWQgYnkgZWRnZSAkaSQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+SW4gdGhlIGZpcnN0IGxpbmUsIHByaW50IHRoZSBtaW5pbXVtIGRpbWVuc2lvbiAkRCQgdG8gd2hpY2ggdGhlIHRyZWUmcnNxdW87cyB2ZXJ0aWNlcyBjYW4gYmUgbW92ZWQuPFwvcD5cclxuXHJcbjxwPlRoZW4gcHJpbnQgJE4kIGxpbmVzIHN0YXJ0aW5nIGZyb20gdGhlIHNlY29uZCBsaW5lLiBUaGUgJGkkLXRoIGxpbmUgb2YgdGhlc2UgbGluZXMgbXVzdCBjb250YWluICREJCBpbnRlZ2VycyAkeF97aSxqfSQuICgkMVxcbGUgalxcbGUgRCQpPFwvcD5cclxuXHJcbjxwPiR4X3tpLGp9JCBkZW5vdGVzIHRoZSAkaiQtdGggY29vcmRpbmF0ZSB2YWx1ZSBvZiB0aGUgcG9pbnQgdGhhdCB2ZXJ0ZXggJGkkIGlzIG1vdmVkIHRvLCBhbmQgJC0xMF45XFxsZSB4X3tpLGp9XFxsZSAxMF45JCBtdXN0IGhvbGQuPFwvcD5cclxuXHJcbjxwPklmIHRoZXJlIGFyZSBtdWx0aXBsZSB3YXlzIHRvIG1vdmUgdGhlIHRyZWUmcnNxdW87cyB2ZXJ0aWNlcyBvbnRvIHRoZSBpbnRlZ2VyIGdyaWQsIHByaW50IGFueS48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIn1d