using System; using static System.Console; using System.Linq; using System.Collections.Generic; using System.Security.Cryptography; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; var a = NList; Array.Sort(a); var dic = new Dictionary(); dic[a[0]] = 1; for (var i = 1; i < n; ++i) { var ndic = new Dictionary(); ndic[a[i]] = 1; foreach (var kv in dic) { if (ndic.ContainsKey(kv.Key)) ndic[kv.Key] += kv.Value; else ndic[kv.Key] = kv.Value; var gcd = GCD(kv.Key, a[i]); if (ndic.ContainsKey(gcd)) ndic[gcd] += kv.Value; else ndic[gcd] = kv.Value; } dic = ndic; } if (dic.ContainsKey(1)) WriteLine(dic[1]); else WriteLine(0); } static int GCD(int a, int b) { if (a < b) return GCD(b, a); if (a % b == 0) return b; return GCD(b, a % b); } }