#include <bits/stdc++.h>
using namespace std;
//路径总数和路径
int a[100][100],t=0;                 
 //四种移动规则
int x[4]={2,1,-1,-2},y[4]={1,2,2,1};

//输出结果 
void print(int n)
{
    t++;
    cout<<t<<":";
	for(int i=1;i<n;i++){
		cout<<a[i][1]<<","<<a[i][2]<<"->";	
	}
	
	cout<<"4,8"<<endl;
}

//递归回溯 
void search(int k)
{
	//往4个方向跳
	for (int i=0;i<=3;i++){ 
		//判断马不越界
		if (a[k-1][1]+x[i]>=0&&a[k-1][1]+x[i]<=4 
		     &&a[k-1][2]+y[i]>=0&&a[k-1][2]+y[i]<=8){
		     	//保存当前马的位置
				a[k][1]=a[k-1][1]+x[i];                              
				a[k][2]=a[k-1][2]+y[i];
				if (a[k][1]==4&&a[k][2]==8){
					print(k);
				}else{
					search(k+1);//搜索下一步	
				} 
			 
		}
	} 
}

int main(){
	a[1][1]=0;
	a[1][2]=0;
	//从坐标(0,0)开始往右跳第二步
	search(2); 
}

/**************************************************************
	Problem: 1362
	User: admin
	Language: C++
	Result: Accepted
	Time:7 ms
	Memory:2112 kb
****************************************************************/