using System; using System.Linq; class B { static int[] Read() => Array.ConvertAll(Console.ReadLine().Split(), int.Parse); static (int, int) Read2() { var a = Read(); return (a[0], a[1]); } static (int, int, int) Read3() { var a = Read(); return (a[0], a[1], a[2]); } static long[] ReadL() => Array.ConvertAll(Console.ReadLine().Split(), long.Parse); static void Main() { var (n, m, p) = Read3(); var a = ReadL(); a = a.Where(x => Gcd(x, p) == 1).ToArray(); if (!a.Any()) { Console.WriteLine(-1); return; } var amax = a.Max(); long x = 1; for (int i = 1; ; i++) { x *= amax; if (x > m) { Console.WriteLine(i); return; } } } static long Gcd(long a, long b) { for (long r; (r = a % b) > 0; a = b, b = r) ; return b; } }