#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<utility>
#include<cmath>
#include<cstring>
#include<queue>
#include<cstdio>
#include<sstream>
#define loop(i,a,b) for(int i=a;i<b;i++) 
#define rep(i,a) loop(i,0,a)
#define pb push_back
#define mp make_pair
#define all(in) in.begin(),in.end()
const double PI=acos(-1);
const double EPS=1e-8;
const int inf=1e9;
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pii;
string s;
vi f(){
	s+=".";
	vi a;
	int t=0;
	rep(i,s.size())if(s[i]=='.'){
		a.pb(atoi(&s.substr(t,i)[0]));
		t=i+1;
	}
	return a;
}
int uruu(int a){
	return a%400==0||(a%4==0&&a%100!=0);
}
int main(){
	int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	while(cin>>s,s!="#"){
		vi in=f();
		if(in.size()==3){
			int a=2012,b=12,c=21,t=0;
			while(a!=in[0]||b!=in[1]||c!=in[2]){
				t%=13*20*20*18*20;
				if(a!=in[0]&&b==1&&c==1){
					t+=365+uruu(a);
					a++;
				}else if((a!=in[0]||b!=in[1])&&c==1){
					t+=d[b]+(b==2?uruu(a):0);
					b++;
					if(b==13)b=1;
				}else{
					t++;
					c++;
					if(d[b]+1+(b==2?uruu(a):0)==c){
						b++;c=1;
					}
					if(b==13){
						b=1;
						a++;
					}
				}
			}
			t%=13*20*20*18*20;
			cout<<t/(20*20*18*20)<<".";
			t%=20*20*18*20;
			cout<<t/(20*18*20)<<".";
			t%=20*18*20;
			cout<<t/(18*20)<<".";
			t%=18*20;
			cout<<t/20<<"."<<t%20<<endl;
		}else{
			int t=in[0]*20*20*18*20+
					in[1]*20*18*20+
					in[2]*18*20+
					in[3]*20+in[4];
			int a=2012,b=12,c=21;
			while(t){
				if(t>365&&b==1&&c==1){
					t-=365+uruu(a);
					a++;
				}else if(t>d[b]+uruu(a)&&c==1){
					t-=d[b]+(b==2?uruu(a):0);
					b++;
					if(b==13)b=1;
				}else{
					t--;
					c++;
					if(d[b]+1+(b==2?uruu(a):0)==c){
						b++;c=1;
					}
					if(b==13){
						b=1;a++;
					}
				}
			}
			cout<<a<<"."<<b<<"."<<c<<endl;
		}
	}
}