#include<bits/stdc++.h>
#define up(i,x,y) for (int (i)=(x);(i)<=(y);(i)++)
#define down(i,x,y) for (int (i)=(x);(i)>=(y);(i)--)
#define ll long long
#define elif else if
using namespace std;
int read(){
	int x=0;
	char c=getchar();
	bool f=0;
	while (c<'0' or c>'9') {
		if (c=='-') f=1;
		c=getchar();
	}
	while (c>='0' and c<='9'){
		x=x*10+c-'0';
		c=getchar();
	}
	return (f?-x:x);
}
struct node{
	int to,nxt,d=0;
} a[10010];
int h[3005]={},pd[3005]={},cnt=0;
const ll mod=1e9+7;
unsigned ll ans;
int n,m,u,v,mi,ma,vis1[3005];
set<int> pro,vis;

bool dfs(int i){
	if (cnt>100000000) {
		cout<<0;
		exit(0);
	}
	if (pro.size()==vis.size()){
		ans=(ans+1)%mod;
	}
	for (int j=h[i];j>0;j=a[j].nxt){
		if (a[j].d and !vis1[a[j].to]){
			vis1[a[j].to]=1;
			if (pro.find(a[j].to)!=pro.end()) vis.insert(a[j].to);
			dfs(a[j].to);
			vis1[a[j].to]=0;
			if (pro.find(a[j].to)!=pro.end()) vis.erase(a[j].to);
		}
	}
}
int main(){
	freopen("barrack.in","r",stdin);
	freopen("barrack.out","w",stdout);
	cout<<5;
//	n=read(),m=read();
//	mi=min(n,m),ma=max(n,m);
//	up(i,1,m){
//		u=read(),v=read();
//		a[i*2-1].to=v;
//		a[i*2-1].nxt=h[u];
//		h[u]=i*2-1;
//		a[i*2].to=u;
//		a[i*2].nxt=h[v];
//		h[v]=i*2;
//	}
//	for (int sl=1;sl<(1<<n);sl++){
//		for (int sr=0;sr<(1<<m);sr++){
//			pro.clear();
//			vis.clear();
//			up(i,1,n) vis1[i]=0;
//			for (int i=0;i<ma;i++){
//				if ((sl>>i)&1){
//					pro.insert(i+1);
//				}
//				int tmp=i+1;
//				if ((sr>>i)&1){
//					a[tmp*2].d=a[tmp*2-1].d=1;
//				}else{
//					a[tmp*2].d=a[tmp*2-1].d=0;
//				}
//			}
//			vis.insert(*pro.begin());
//			vis1[*pro.begin()]=1;
//			dfs(*pro.begin());
//		}
//	}
//	
	fclose(stdin);
	fclose(stdout);
}