int n = read_uint();
int min = 0;
for (int i = 0; i < n; i++) {
a[i] = read_uint();
if (a[i] < a[min]) min = i; // 找到最小值
}
for (int i = 0; i < n; i++) {
if (i == min || a[i] == 0) continue;
a[i] %= a[min]; // 整除。那么gcd等于a[min],直接剔除重复的a[i]
if (a[i] == 0) continue; // 值为0将不再参与任何运算
a[i] = gcd(a[i], a[min]);
if (a[i] == 1) { // 互质
write_uint(n); // 直接输出答案
putchar('\n');
return 0;
} else { // 只要不整除,gcd一定小于a[min]
a[min] = 0; // 按照规则,a[min]也会变成gcd,剔除掉重复的a[min]
min = i; // 所以它成为新的最小值
i = -1; // 从头开始遍历
}
}
write_ulong((long)n * a[min]); // 注意乘积超出了int范围
putchar('\n'); #include<bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 0x3f3f3f3f3f3f3f3f;
void solve(){
int n;cin>>n;
int a;cin>>a;
for(int i=2;i<=n;i++){
int b;cin>>b;
a=__gcd(a,b);
}
cout<<a*n;
}
signed main(){
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int t=1;
// cin>>t;
while(t--){
solve();
}return 0;
}