#include<bits/stdc++.h>
#define rep(i,n) for(int i=1;i<=n;++i)
#define N 55
using namespace std;
typedef long long ll;
struct NUM{
	ll s[N],l;
	bool operator<(NUM p){
		if(l!=p.l)return l<p.l;
		for(int i=l;i;--i)if(s[i]!=p.s[i])return s[i]<p.s[i];
		return 0;
	}
	NUM operator+(NUM p){
		static NUM c;
		memset(c.s,0,sizeof c.s);
		c.l=max(l,p.l);
		rep(i,c.l+1)
			c.s[i]=s[i]+p.s[i]+(c.s[i-1]>9?1:0),
			c.s[i-1]=c.s[i-1]>9?c.s[i-1]-10:c.s[i-1];
		if(c.s[c.l+1])++c.l;
		return c;
	}
	NUM operator*(ll p){
		static NUM c;
		memset(c.s,0,sizeof c.s);
		rep(i,l)c.s[i]=s[i]*p;
		c.l=1;
		while(c.l<l||c.s[c.l]>9)
			c.s[c.l+1]+=c.s[c.l]/10,
			c.s[c.l]%=10,++c.l;
		return c;
	}
	NUM operator*(NUM p){
		static NUM c;
		memset(c.s,0,sizeof c.s);
		rep(i,l)rep(j,p.l)c.s[i+j-1]+=s[i]*p.s[j];
		c.l=1;
		while(c.l<l+p.l-1||c.s[c.l]>9)
			c.s[c.l+1]+=c.s[c.l]/10,
			c.s[c.l]%=10,++c.l;
		return c;
	}
}A,B,C,D,T,W,E,R;
char st[N];int len=0;
ll n,m,CC=0,lt,rt;bool p,q;
int main(){
	while(~scanf("0.%s",st+1)){
		getchar();
		len=strlen(st+1);
		m=1;rep(i,len+1)m*=10;
		n=0;rep(i,len)n=n*10+st[i]-'0';n*=10;
		memset(A.s,0,sizeof A.s);A.l=0;
		memset(B.s,0,sizeof B.s);B.s[1]=1;B.l=1;
		memset(D.s,0,sizeof D.s);D.l=0;
		memset(C.s,0,sizeof C.s);C.s[1]=1;C.l=1;
		for(;;){
			T=A+C,W=B+D;
			E=T*T,R=W*W;
			p=E*m<R*(n-5),q=E*m<R*(n+5);
			if(!p&&q)break;
			lt=1,rt=1e10;
			if(p){
				while(lt+1<rt){
					ll mid=lt+rt>>1;
					T=A+C*mid,W=B+D*mid;
					E=T*T,R=W*W;
					p=E*m<R*(n-5);
					if(p)lt=mid;else rt=mid;
				}
				A=A+C*lt,B=B+D*lt;
			}else{
				while(lt+1<rt){
					ll mid=lt+rt>>1;
					T=A*mid+C,W=B*mid+D;
					E=T*T,R=W*W;
					q=E*m<R*(n+5);
					if(!q)lt=mid;else rt=mid;
				}
				C=A*lt+C,D=B*lt+D;
			}
		}
		printf("Case #%d: ",++CC);
		for(int i=T.l;i;--i)printf("%d",T.s[i]);
		putchar('/');
		for(int i=W.l;i;--i)printf("%d",W.s[i]);puts("");
	}
	return 0;
}