#include<stdio.h>
#include<math.h>

int check(long s);
void sosu(long s);


long f1=0,f2=0;
long so[100000],sc=0;

int main(){
	long n,i;
	int l,f;
	
	for(i=0;i<100000;i++)so[i]=0;
	so[0]=2;
	
	/*
	while(scanf("%d",&n)!=0){
		if(n==0)break;
		if(n%2==0)n-=1;
		for(i=n;i>=13;i-=2){
			
			if(check(i)==0){
				if(check(i-2)==0){
					f1=i-2;
					if(check(i-6)==0){
						f2==i-6;
						if(check(i-8)==0){
							printf("%d\n",i);
							break;
						}
					}
				}
			}
		}
	}
	*/
	
	while(scanf("%ld",&n)!=EOF){
		
		sosu(n);
		//for(i=0;so[i]!=0;i++)printf("%d\n",so[i]);
		
		for(i=0;;i++){
			if(n<so[i] || so[i]==0)break;
		}
		for(i=i-1;;i--){
			for(l=i-1,f=0;so[l]>=so[i]-8;l--){
				if(so[l]==so[i]-2 || so[l]==so[i]-6 || so[l]==so[i]-8)f++;
			}
			if(f==3){
				printf("%ld\n",so[i]);
				break;
			}
			if(so[i]==13)break;
		}
		
		
	}
	
	return 0;
}

int check(long s){
	long i;
	
	if(s%2==0)return -1;
	
	if(s==f1){
		f1=0;
		return 0;
	}
	
	if(s==f2)return 0;
	else if(s<f2)f2=0;
	
	i=sqrt(s);
	if(i*i==s)return -1;
	
	for(i=3;i*i<s;i=i+2){
		if(s%i==0)
		return -1;
	}
	
	return 0;
}

void sosu(long s){
	long i,j;
	
	for(i=0;;i++){
		if(so[i]==0)
		break;
	}
	
	for(j=so[i-1];j<=s;j++){
		for(i=0;;i++){
			if(so[i]==0){
				so[i]=j;
				break;
			}
			if(j%so[i]==0)
			break;
		}
		
	}
	return 0;
}