#pragma warning(disable:4786)
#include <iostream>
#include <vector>
#include <string>
using namespace std;
typedef vector<int> vint;

std::ostream& operator<<(std::ostream& os,const vint& rhs)
{
        vector<int>::const_iterator i;
        for(i=rhs.end()-1;i>=rhs.begin();i--)
        os << *i;
        return os;
}
vint to_vint(string n)
{
        vint result;result.clear();
        if(n.size()>0)
        for(long i=n.size()-1;i>=0;i--)
        {
        result.push_back(n.at(i)-'0');
        }
        return result;
}

void refresh(vint& rhs)
{ 
	
	if(rhs.size()<=0){rhs=to_vint("0");return;}
        vector<int>::iterator i;
        long mid=0;
        for(i=rhs.begin();i<rhs.end();i++)
        {
                *i+=mid;
                mid=(*i)/10;
                *i=(*i)%10;
        }
        if(mid>0) rhs.push_back(mid);
       for(i=rhs.end()-1;;i--)
        {
                if ((*i)==0)rhs.pop_back();
                else break;
        }
}

bool operator>=(const vint& lhs,const vint& rhs)
{
        vector<int>::const_iterator i,j;
        if(lhs.size()>rhs.size())return (1);
        else if(lhs.size()==rhs.size())
        {
                for(i=lhs.end()-1,j=rhs.end()-1;i>=lhs.begin();i--,j--)
                {       if ((*i)>(*j)) return (1);
                        else if((*i)<(*j))return 0;
						else continue;
                }
                return 1;
        }
        else return 0;
}

vint operator+(const vint& lhs,const vint& rhs)
{
        vector<int> result;result.clear();
        vector<int>::const_iterator i,j;
    for(i=lhs.begin(),j=rhs.begin();i<lhs.end()&&j<rhs.end();i++,j++)
                result.push_back((*i)+(*j));
        
        if(rhs.size()>lhs.size())
        {
                for(;j<rhs.end();j++)result.push_back(*j);
        }
        else if(lhs.size()>rhs.size())
                for(;i<lhs.end();i++)
                        result.push_back(*i);
        refresh(result);return(result);
}

vint operator-(const vint& lhs,const vint& rhs)
{
        vector<int> result;result.clear();
    vector<int>::const_iterator i,j;
    long mid=0,num=0;
        for(i=lhs.begin(),j=rhs.begin();i<lhs.end()&&j<rhs.end();i++,j++)
        {
                num=mid+ *j;
                if(*i>=num){mid=0;result.push_back(*i-num);}
                else{mid=1;result.push_back(*i+10-num);}
        }

        if(i<lhs.end()){for(;i<lhs.end();i++)result.push_back(*i-mid);mid=0;}
        refresh(result);
        return(result);
}

vint operator/(const vint& lhs,const vint& rhs)
{   
	if(rhs>=lhs+to_vint("1"))return(to_vint("0"));
        vector<int>::const_iterator j;
        vector<int>::iterator i;
        vint quotient,remainder;
        quotient.clear();remainder.clear();
    vint num;num.clear();
    remainder=lhs;
        long n=lhs.size()-rhs.size()+1;
        for(long m=0;m<n;m++)quotient.push_back(0);
        for(i=quotient.end()-1;i>=quotient.begin();i--)
        {
                num.clear();
                if(n>1)for(long m=1;m<n;m++)num.push_back(0);
                for(j=rhs.begin();j<rhs.end();j++)num.push_back(*j);
                while(remainder>=num)
                {
                        remainder=remainder-num;
                        (*i)+=1;
                }
                n-=1;
        }
        refresh(quotient);
		if (quotient.size()==0)quotient.push_back(0);
        return(quotient);
}


void read_two_number(vint rhs[2])
{
	rhs[1].clear();rhs[2].clear();
        //vector<int>::iterator k;
        int k;
        long i;
        vint a0,a1,a2;a0.clear();a1.clear();a2.clear();
        cin>>ws;
        string c;
        cin>>c;
        for(i=0;i<c.size();i++)
        {
                if(c.at(i)>='0'&&c.at(i)<='9')
                a0.push_back(c.at(i)-'0');
                else if(c.at(i)=='E'||c.at(i)=='e')
                {i++;break;}
                else break;
        }
        if(i>=c.size())////finish read number;
        {       
                rhs[1].push_back(1);
                for( k=a0.size()-1;k>=0;k--)
                rhs[0].push_back(a0[k]);
                return;
        }
        if(c.at(i)=='-')///////
        {
                a1.clear();
                i++;///////go on read number;
                if(i<c.size())
				{
					for(;i<c.size();i++)
					{
                        if(c.at(i)>='0'&&c.at(i)<='9')
                        a1.push_back(c.at(i)-'0');
					}
                    for( k=a1.size()-1;k>=0;k--)
                    a2.push_back(a1[k]);
                    for(vint j=to_vint("1");a2>=j;j=j+to_vint("1"))
                                rhs[1].push_back(0);
				}
                rhs[1].push_back(1);
                for( k=a0.size()-1;k>=0;k--)
                rhs[0].push_back(a0[k]);
                return;
        }
        else if(c.at(i)=='+'||(c.at(i)<='9'&&c.at(i)>='0'))
		{
		if(c.at(i)=='+')i++;
            a1.clear();a2.clear();
            if(i<c.size())
			{
				for(;i<c.size();i++)
				{
					if(c.at(i)>='0'&&c.at(i)<='9')
                        a1.push_back(c.at(i)-'0');
				}
                for( k=a1.size()-1;k>=0;k--)
                a2.push_back(a1[k]);
                for(vint j=to_vint("1");a2>=j;j=j+to_vint("1"))
                   rhs[0].push_back(0);
			}
            rhs[1].push_back(1);
            for( k=a0.size()-1;k>=0;k--)
                rhs[0].push_back(a0[k]);
            return; 
		}
		else
		{
			rhs[1].push_back(1);
            for( k=a0.size()-1;k>=0;k--)
                rhs[0].push_back(a0[k]);
            return; 

		}
}
istream& operator>>(istream& is,vint& rhs)
{
        vint mid;rhs.clear();
        is>>ws;
        is.clear();
        string c;
        is>>c;
        for(long i=c.size()-1;i>=0;i--)rhs.push_back(c.at(i)-'0');
        return is;
}

vint operator*(const vint& lhs,const vint& rhs)
{
        vint result,mid;vector<int>::const_iterator i,j;
    result.clear();
        long m;
        for(i=lhs.begin(),m=0;i<lhs.end();i++,m++)
        {
                mid.clear();
                if(m>0)for(long k=0;k<m;k++)
                {
                        mid.push_back(0);
                }
                for(j=rhs.begin();j<rhs.end();j++)
                {
                        
                        mid.push_back((*i)*(*j));
                }
                refresh(mid);
                result=result+mid;
        refresh(result);
        }
        refresh(result);
        return result;
}
vint operator%(const vint& lhs,const vint& rhs)
{
	vint result=lhs-lhs/rhs*rhs;
	refresh(result);
        return(result);
}

///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////

int main()
{
		
        vint year,day,hour,minute,second[2];//the result will be stored in these variables;
        vint days,hours,minutes,seconds;//the years length will be cin ed in these variables;
        vint ring;//the number of rings;
	for(;;)
	{	
		year.clear();day.clear();hour.clear();minute.clear();
		days.clear();hours.clear();minutes.clear();
	    ring.clear();second[0].clear();second[1].clear();
		seconds.clear();
		
		cout<<"please input the number of rings. 0 to quit\n";
        cin>>ring;
		if(to_vint("0")>=ring)break;
        cout<<"please input the length of a year in days,hours,minutes,seconds:\n";
        cin>>days;
        cin>>hours;
        cin>>minutes;
        cin>>seconds;
        
		cout<<"please input the time of move a ring in seconds :\n";
        read_two_number(second);
        vint total=second[0];

		for(vint i=to_vint("1");ring>=i; i=i+to_vint("1"))
        {
                total=total+total; 
        }
        //cout<< total<<endl;
		vint tota=(total-second[0])/second[1];//total=(2^(ring)-1)*second[0])/second[1];
        vint left=(total-second[0])%second[1];
        total=tota;
		vint y=days*to_vint("86400")+hours*to_vint("3600")+minutes*to_vint("60")+seconds;
        
        //cout<<"\n"<<total<<endl;
        
		year=total/y;total=total%y;
        day=total/to_vint("86400");total=total%to_vint("86400");
        hour=total/to_vint("3600");total=total%to_vint("3600");
        minute=total/to_vint("60");total=total%to_vint("60");
        second[0]=total;

        cout<<"the universial time is :\n";
        cout<<year<<"  years\n";
        cout<<day<<"  days\n";
        cout<<hour<<"  hours\n";
        cout<<minute<<"  minutes\n";
        cout<<second[0]<<"  and  "<<left<<"/"<<second[1]<<"  seconds\n";
	}

		  return 0;
}

