#include<bits/stdc++.h>
using namespace std;
int const N=10005;
int p[N]={0},pot[N]={0};
class Graph{
private:
int V;
vector< vector <int> >G;
public:
Graph(int vnum):V(vnum){
G.resize(V,vector<int>(V,0));
}
void addedge(int x,int y)
{
G[x][y]=1;
G[y][x]=1;
}
void printG()
{
for(int i=1;i<V;i++)
{
for(int j=1;j<V;j++)
{
cout<<G[i][j]<<' ';
}
cout<<endl;
}
}
int getnum(int x)
{
int ans=0;
for(int i=1;i<V;i++)
{
if(G[x][i]==1)
{
ans++;
}
}
return ans;
}
int gop(int x,int y)
{
return G[x][y];
}
};
bool vis[N];
void DFS(int n,Graph g,int max,int now)
{
for(int i=1;i<=n;i++)
{
if(g.gop(n,i)==1&&vis[i]==false)
{
vis[i]=true;
// if(n!=1&&)
// DFS(i,g);
vis[i]=false;
}
}
}
int lcm(int x,int y)
{
return x*y/__gcd(x,y);
}
pair<int ,int > op[N];
int main()
{
int t;
cin>>t;
int ansqwe=1;
for(int i=1;i<=15;i++)
{
ansqwe=lcm(i,ansqwe);
}
cout<<ansqwe<<endl;
// while(t--)
// {
// int n;
// cin>>n;
// Graph g(n+1);
// int x,y;
// for(int i=1;i<n;i++)
// {
// cin>>x>>y;
// g.addedge(x,y);
// }
// for(int i=1;i<=n;i++)
// {
// cin>>p[i];
// }
// for(int i=1;i<=n;i++)
// {
// switch (g.getnum(i)){
// case 1:
// pot[i]=1;
// break;
// case 2:
// pot[i]=2;
// break;
// case 3:
// pot[i]=3;
// break;
// }
// }
// int cou=0;
// for(int i=1;i<=n;i++)
// {
// if(g.getnum(i)==3||g.getnum(i)==1)
// {
// cou++;
// }
// }
DFS(1,g,);
//
//
// memset(p,n+2,0);
// memset(op,n+2,(0,0));
// }
return 0;
}