#include <bits/stdc++.h>
using namespace std;
int a[3],v[1000000] //标记,排除相同的输出;
int md(int y,int m,int d){//检查是否符合条件
int f=0;
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&d>0&&d<=31){
f=1;
}
else if(m==2&&d>0&&d<=(((y%4==0)||(y==0))?29:28)){
f=1;
}
else if((m==11||m==9||m==6||m==4)&&d<=30&&d>0)f=1;
return f;
}
int j(int x,int y,int z){//用于标记
return a[x]*10000+a[y]*100+a[z];
}
string p(int x){//to_string()
string a=to_string(x/10),b=to_string(x%10);
return a+b;
}
int main(){
scanf("%d/%d/%d",&a[0],&a[1],&a[2]);
sort(a,a+3);
string x[3];
if(md(a[0],a[1],a[2])&&v[j(0,1,2)]==0){//一一判断
v[j(0,1,2)]++;
x[0]+=(a[0]>=60)?"19":"20";
x[0]+=p(a[0])+"-"+p(a[1])+"-"+p(a[2]);
}
if(md(a[2],a[0],a[1])&&v[j(2,0,1)]==0){
v[j(2,0,1)]++;
x[1]+=(a[2]>=60)?"19":"20";
x[1]+=p(a[2])+"-"+p(a[0])+"-"+p(a[1]);
}
if(md(a[2],a[1],a[0])&&v[j(2,1,0)]==0){
v[j(2,1,0)]++;
x[2]+=(a[2]>=60)?"19":"20";
x[2]+=p(a[2])+"-"+p(a[1])+"-"+p(a[0]);
}
sort(x,x+3);
for(int i=0;i<3;++i)
if(x[i].size()==10)cout<<x[i]<<endl;
return 0;
}
int a[3],v[1000000]; //缺分号
int md(int y,int m,int d){//检查是否符合条件
int f=0;
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&d>0&&d<=31){
f=1;
}
else if(m==2&&d>0&&d<=(((y%4==0)||(y==0))?29:28)){
f=1;
}
else if((m==11||m==9||m==6||m==4)&&d<=30&&d>0)f=1;
return f;
}
int j(int x,int y,int z){//用于标记
return a[x]*10000+a[y]*100+a[z];
}
string p(int x){//to_string()
string a=to_string(x/10),b=to_string(x%10);//to_string没有定义
string b="";
return a+b;//b没有定义
}