//轨道炮
#include<iostream>
using namespace std;
#include<algorithm>
int logs[100010];
int main()
{int n;cin >> n;for (int i = 1;i <= n;i++){cin >> logs[i];}sort(logs + 1, logs + n + 1);int ans = 1000000000;for (int i = 2;i <= n;i++){if (logs[i] - logs[i - 1] < ans)ans = logs[i] - logs[i - 1];}int flag = 0;int res = 1;while (flag==0){res = 1;for (int i = 2;i <= n;i++){if ((logs[i] - logs[i - 1]) % ans == 0){res += ((logs[i] - logs[i - 1]) / ans);}else{ans--;break;}}flag = 1;}cout << res << endl;return 0;
}
#include<iostream>
using namespace std;
#include<string>
int arr[30];
int main()
{string str;cin >> str;for (int i = 0;i < str.length();i++){arr[int(str[i]) - 96]+=1;}int ans1=0;int ans2;for (int i = 1;i <= 26;i++){if (arr[i] > ans1){ans2 = i;ans1 = arr[i];}}//cout << arr[15] << endl;cout << char(ans2 + 96) << endl << ans1 << endl;return 0;
}
//怒砍20分
#include<iostream>
using namespace std;
char ch[30][30];
char chs[30][30];
int dx[] = { -1,1,0,0 };
int dy[] = { 0,0,-1,1 };
int n, m;
void dfs(int x, int y)
{chs[x][y] = '1';ch[x][y] = '0';for (int i = 0;i < 4;i++){if (x + dx[i] >= 1 && y + dy[i] >= 1&& x + dx[i]<=n&& y + dy[i]<=m){if (ch[x + dx[i]][y + dy[i]] == '1'){dfs(x + dx[i], y + dy[i]);}}}
}
int daan()
{int ans1 = 0;int ans2 = 0;for (int i = 1;i <= n;i++){for (int j = 1;j <= m;j++){if (chs[i][j] == '1'){if (i == 1 && j == 1)ans1++;else if (i == 1){if (chs[i][j - 1] == '0')ans1++;}else if (j == 1){if (chs[i - 1][j] == '0')ans1++;}else if (chs[i - 1][j] == '0' && chs[i][j - 1] == '0')ans1++;}}}for (int i = 1;i < n;i++){if (chs[i + 1][m] == '0'&&chs[i][m]=='1')ans2++;}for (int i = 1;i < m;i++){if (chs[n][i+1] == '0' && chs[n][i] == '1')ans2++;}if (chs[n][m] == '1')ans2++;//cout << "ans1=" << ans1 << " " << "ans2=" << ans2 << endl;return max(ans1, ans2);
}
int main()
{int ans = 0;cin >> n >> m;for (int i = 1;i <= n;i++){for (int j = 1;j <= m;j++){cin >> ch[i][j];}}for (int i = 1;i <= n;i++){for (int j = 1;j <= m;j++){if (ch[i][j]=='1'){for (int z = 1;z <= n;z++){for (int w = 1;w <= m;w++){chs[z][w] = '0';}}dfs(i, j);/*for (int z = 1;z <= n;z++){for (int w = 1;w <= m;w++){cout << chs[z][w];}cout << endl;}*/ans += daan();}}}cout << ans << endl;return 0;
}
#include<iostream>
using namespace std;
#include<string>
int main()
{string str;cin >> str;int l = str.length();int ans = 0;for (int i = 0;i < l;i++){ans += (int(str[i] - 48));}int flag = ans;while ((ans / 10) != 0){flag = 0;while (ans){flag += (ans % 10);ans /= 10;}ans = flag;}cout << flag << endl;return 0;
}
#include<iostream>
using namespace std;
bool use[1000010];
int main()
{int n, m;cin >> n >> m;int maxx = max(n, m);int minn = min(n, m);int ans = minn-1;for (int i = 1;i <= n*m;i++){if (i < minn){use[i] = true;ans = i;}else{if (i % minn == 0 || i % maxx == 0)use[i] = false;else{if (i > maxx){if (use[i - minn] == true && use[i - maxx] == true){use[i] = true;ans = i;}}else if(use[i-minn]){use[i] = true;ans = i;}}}}cout << ans << endl;return 0;
}
#include<iostream>
using namespace std;
int n, m;
int sum = 0;
bool use[15][15];
int arr[15][15];int ans = 10000;int dx[] = { 0 ,0,-1,1 };
int dy[] = { -1,1,0,0 };void dfs(int x,int y,int num, int d)
{//cout << num <<" "<< x<<" "<<y <<" "<< ans<< endl;if (num > sum)return;else if (num == sum){if (d < ans)ans = d ;return;}else if (d >= ans)return;else {use[x][y] = true;for (int i = 0;i < 4;i++){if (x + dx[i] > 0 && x + dx[i] <= n && y + dy[i] > 0 && y + dy[i] <= m && use[x + dx[i]][y + dy[i]] == false){dfs(x + dx[i], y + dy[i], num + arr[x+dx[i]][y+dy[i]], d + 1);}}use[x][y] = false;}return;
}
int main()
{//43cin >> m >> n;for (int i = 1;i <= n;i++){for (int j = 1;j <= m;j++){cin >> arr[i][j];sum += arr[i][j];}}if (sum % 2 != 0){cout << 0 << endl;}else{sum /= 2;dfs(1, 1, arr[1][1], 1);if (ans == 10000){cout << 0 << endl;}else{cout << ans << endl;}}return 0;
}
#include<iostream>
using namespace std;
#include<vector>
int n;
int ans = 0;
int arr[10];
bool use[10];
void f()
{//cout << 1 << endl;for (int i = 1;i <= 7;i++){int flag1 = 1;int num1 = 0;while (flag1!=i+1)///1-5 1 12 123{num1 *= 10;num1 += arr[flag1];flag1++;}if (num1 >= n)break;for (int j = i + 1;j <= 8;j++){int num2 = 0;int flag2 = i+1;while (flag2!=j+1){num2 *= 10;num2 += arr[flag2];flag2++;}int num3 = 0;int flag3 = j+1;while (flag3 != 10){num3 *= 10;num3 += arr[flag3];flag3++;}long long n1 = n * num3;long long n2 = num1 * num3 + num2;if (n1 == n2)ans++;}}
}void dfs(int u)
{//cout << 2 << endl;if (u == 10){f();return;}for (int i = 1;i <= 9;i++){if (!use[i]){arr[u] = i;use[i] = true;dfs(u + 1);use[i] = false;}}
}int main()
{cin >> n;dfs(1);cout << ans << endl;return 0;
}//#include<iostream>
//#include <algorithm>
//using namespace std;
//int arr[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//int get_num_helper(int a, int b)
//{
// int tmp = 0;
// while (a <= b)
// {
// tmp *= 10;
// tmp += arr[a];
// a++;
// }
// return tmp;
//}
//void get_num(int i, int j, int& a, int& b, int& c)
//{
// a = get_num_helper(0, i);
// b = get_num_helper(i + 1, j);
// c = get_num_helper(j + 1, 8);
//}
//int main()
//{
// int n;
// int ans = 0;
// cin >> n;
// // 1.给出1~9的所有排列9!
// do {
// // 2.对于每个排列进行划分:划分为整数a,分母b,分子c
// int a, b, c;
// for (int i = 0; i < 8; i++)
// {
// for (int j = i + 1; j < 9; j++)
// {
// get_num(i, j, a, b, c);
// if (a == 0 || b == 0 || c == 0) continue;
// // 3.检验划分后的结果是否等于给定数字n
// if (b % c == 0 && a + (b / c) == n) ans++;
// }
// }
//
// } while (next_permutation(arr, arr + 9));
//
// cout << ans << endl;
//
// return 0;
//}
#include<iostream>
using namespace std;
int main()
{int a, b, c;cin >> a >> b >> c;int ans = a * b * c;for (int i = a * b * c;i >= 1;i--){if ( i % a == 0 && i % b == 0 && i % c == 0){ans = i;}}cout << ans << endl;return 0;
}