#include<bits/stdc++.h>
using namespace std;
#define int long long
char s[16];
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool leap_year(int y){
    return !(y%400)||((y%100)&&!(y%4));
}
char ret[32];
string mayan_to_ad(){
    int b,ka,t,w,ki;
    int y,m,d;
    sscanf(s,"%lld.%lld.%lld.%lld.%lld",&b,&ka,&t,&w,&ki);
    int dki=b*20*20*18*20+ka*20*18*20+t*18*20+w*20+ki;
    if(dki<=10){
        y=2012;
        m=12;
        d=21+dki;
    }
    else{
        dki-=10;
        for(int yy=2013;;yy++){
            for(int mm=1;mm<=12;mm++){
                int tmp=(leap_year(yy)&&mm==2);
                for(int dd=1;dd<=month[mm]+tmp;dd++){
                    dki--;
                    if(dki==0){
                        y=yy;m=mm;d=dd;
                        goto end;
                    }
                }
            }
        }
    }
    end:;

    sprintf(ret,"%lld.%lld.%lld",y,m,d);
    return ret;
}
string ad_to_mayan(){
    int y,m,d,b,ka,t,w,ki;
    int leap=0;
    sscanf(s,"%lld.%lld.%lld",&y,&m,&d);
    for(int i=2013;i<y;i++)if(leap_year(i))leap++;
    if(leap_year(y)&&m>2)leap++;
    int dy=365*max(0ll,y-2013)+leap;
    if(y>2012){
        dy+=10;
        for(int i=1;i<=m;i++){
            if(i==m)dy+=d;
            else dy+=month[i];
        }
    }
    else dy=d-21;
    dy%=20*20*20*18*13;
    b=dy/(20*20*20*18);dy%=20*20*20*18;
    ka=dy/(20*18*20);dy%=20*18*20;
    t=dy/(18*20);dy%=18*20;
    w=dy/20;dy%=20;
    ki=dy;
    sprintf(ret,"%lld.%lld.%lld.%lld.%lld",b,ka,t,w,ki);
    return ret;
}
signed main(){
    while(cin>>s,s[0]!='#'){
        int cnt=0;
        for(int i=0;s[i];i++)if(s[i]=='.')cnt++;
        string ans;
        if(cnt==2)ans=ad_to_mayan();
        else ans=mayan_to_ad();
        cout<<ans<<endl;
    }
}