#include <iostream>
using namespace std;
const int N=11;
struct node
{
int front;
int dis;
}front_point[N];//记录每个点到起点的距离和每个点的前驱
int graph[N][N];//用邻接矩阵来表示图
bool visited[N];//记录点是否被标记
void BFS(int x,int k)//广搜
{
int i;
bool flag=false;
for(i=0;i<N;i++)
{
if(graph[x][i]&&!visited[i])//寻找未被标记的点,且与x相连
{
front_point[i].front=x;
front_point[i].dis=k;
visited[i]=true;
flag=true;
}
}
if(!flag)
return ;
for(i=0;i<N;i++)
{
if(front_point[i].dis==k)
BFS(i,k+1);
}
}
int main()
{
freopen("input.txt","r",stdin);
int x,y,i;
while(cin>>x>>y)//输入图
{
graph[x-1][y-1]=graph[y-1][x-1]=1;
}
for(i=0;i<N;i++)//初始化
visited[i]=false;
front_point[10].dis=0;
front_point[10].front=-1;
visited[10]=true;
int k=1;
BFS(10,k);
for(i=0;i<N;i++)//输出结果
{
cout<<front_point[i].dis<<" "<<front_point[i].front<<endl;
}
return 0;
}