-100 0 50 1
0
 -1000 0 10 1
5
 -3 1 100 1
3
 1000000000 100000 1000000000 4
5433 13 6 0
 5 1 5 5
1 2 3 4 0
 2 -1 6 1
2
 3 2 30 3
-691070108 -934106649 -220744807
 0 8 5 1
9
 2 -1 1 1
1
 3 2 115 16
24 48 12 96 3 720031148 -367712651 -838596957 558177735 -963046495 -313322487 -465018432 -618984128 -607173835 144854086 178041956
 0 1 1 1
0
 -1000000000 -1000000000 1 1
232512888
 0 2 2143435 4
54343 -13 6 124
 0 69 12 1
1
 3 1 3 1
5
 0 5 8 1
10
 3 2 30 1
3
 2 -1 10 1
2
 -5 -1 10 1
-5
 -1 -1 2143435 4
-1 -123 -5453 141245
 11 0 228 5
-1 0 1 5 -11245
 123 -1 2143435 5
-123 0 123 -5453 141245
 2 2 4 1
2
 3 0 1 1
3
 0 4 1 1
2
 3 2 3 4
6 14 25 48
 3 2 25 2
379195692 -69874783
 -10 1 5 1
100
 1000000000 999999998 1000000000 1
0
 0 3 3 1
1
 1 0 2 1
1
 0 -3 2143435 5
-1 0 1 5 -11245
 11 0 1111 1
11
 2 0 3 1
2
 100 10 2 1
100
 0 5 10 1
2
 123 -1 10000 1
123
 1 5 10000 1
125
 123 0 2143435 4
5433 0 -123 -645
 11 0 228 5
-1 -17 1 5 -11245
 0 23 3 1
3
 3 0 3 1
4
 5 -1 3 1
0
 123 0 2143435 4
5433 0 123 -645
 2 -1 3 1
2
 2 -2 10 1
1
 -3 0 92055 36
-92974174 -486557474 -663622151 695596393 177960746 -563227474 -364263320 -676254242 -614140218 71456762 -764104225 705056581 -106398436 332755134 -199942822 -732751692 658942664 677739866 886535704 183687802 -784248291 -22550621 -938674499 637055091 -704750213 780395802 778342470 -999059668 -794361783 796469192 215667969 354336794 -60195289 -885080928 -290279020 201221317
 -1000 0 100 1
2
 123 -1 2143435 5
-123 0 12 5 -11245
 1 1 1000000000 1
100
 3 0 3 1
0
 1 0 2143435 4
1 -123 -5453 141245
 -3 0 1 1
-3
 2 0 2 1
-1
 123 -1 2143435 4
54343 -13 6 123
 -100 -1 1 1
1
 2 -1 100 1
2
 10 -1 2 1
1
 -1000 0 100 1
-1000
 0 3 100 1
5
 5 2 100 1
5
 -4 1 1 1
0
 -20 0 10 1
0
 -5 0 1 1
1
 10 -1 3 2
10 8
 0 35 2 1
3
 0 5 100 2
34 56
 11 0 2 5
-1 0 1 5 -11245
 0 2 100 1
5
 123 0 125 1
123
 100 0 100000 1
100
 1 -1 1 1
1
 1 -1 2143435 4
1 -123 -5453 141245
 2 2 4 1
3
 15 -1 15 4
15 -15 1 2
 3 2 24 4
6 14 25 48
 1 -1 2 1
1
 123 0 21 4
543453 -123 6 1424
 0 2 30 4
6 14 25 48
 10 10 10 1
123
 2 0 2 1
2
 0 4 1000 3
5 6 7
 -2 0 1 1
1
 0 10 10 1
2
 5 1 2 1
2
 3 3 104 17
9 -73896485 -290898562 5254410 409659728 -916522518 -435516126 94354167 262981034 -375897180 -80186684 -173062070 -288705544 -699097793 -11447747 320434295 503414250
 -10 0 5 1
0
 -3 1 100 1
-3
 0 8 10 1
5
 5 0 20 1
5
 0 0 2143435 5
-1 -153 1 5 -11245
 4 0 4 1
0
 2 0 1 1
2
 5 -1 100 1
5
 1 -2 1000000000 1
0
 0 2 5 1
1
 1 -1 10 1
1

0
 0
 inf
 1
 inf
 inf
 4
 inf
 0
 1
 0
 0
 inf
 inf
 inf
 inf
 3
 inf
 inf
 inf
 1
 0
 1
 0
 inf
 1
 4
 0
 1
 inf
 inf
 0
 inf
 inf
 0
 inf
 inf
 5
 1
 inf
 inf
 inf
 0
 0
 inf
 3
 inf
 0
 inf
 inf
 1
 inf
 0
 inf
 inf
 0
 inf
 0
 0
 inf
 4
 0
 0
 0
 0
 inf
 inf
 0
 inf
 inf
 inf
 inf
 inf
 2
 0
 3
 inf
 0
 inf
 1
 inf
 inf
 0
 inf
 0
 3
 0
 0
 inf
 inf
 inf
 1
 0
 inf
 30
 inf
 inf

// Code Author: Shrey Shah
 
import java.io.*;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*;


public class Tester2 {

	static double eps=(double)1e-6;
	static long mod=(int)1e9+7;
	public static void main(String args[]){
		InputReader sc = new InputReader(System.in);
		OutputStream outputStream = System.out;
		PrintWriter out = new PrintWriter(outputStream);
		//----------My Code----------
		long b1 = sc.nextLong();
		long q = sc.nextLong();
		long l = sc.nextLong();
		long m = sc.nextLong();
		HashSet hs = new HashSet();
		for(long i=0;i<m;i++)
			hs.add(sc.nextLong());
		if(Math.abs(b1)<=l)
		{
		if(q==1)
		{
			if(hs.contains(b1))
				out.println(0);
			else
				out.println("inf");
		}
		else if(q==-1)
		{
			if(hs.contains(b1*q) && hs.contains(b1))
				out.print(0);
			else
				out.print("inf");
		}
		else if(q==0)
		{
			int a=0;
			if(!hs.contains(b1))
				a++;
			if(hs.contains((long)0))
				out.print(a);
			else
				out.println("inf");
		}
		else if(b1==0)
		{
			if(hs.contains(b1))
				out.print(0);
			else
				out.println("inf");
		}
		else
		{
			long b =b1;
			long count =0;
			while(Math.abs(b)<=l)
			{			
				if(!hs.contains(b))
					count++;
				b = b*q;
			}
			out.print(count);
		}
	}
		else
			out.print(0);
		//----------The End----------
		out.close();
	}

	
	static boolean isSubSequence(String str1, String str2, int m, int n)
	{
	   int j = 0;
	   for (int i=0; i<n&&j<m; i++)
	       if (str1.charAt(j) == str2.charAt(i))
	         j++;
	 
	   return (j==m);
	}
		
	static long fibo(long l) {
        if (l < 0) {
            throw new IllegalArgumentException("The fibo value cannot be negative");
        }

        if (l <= 1) return l;

        long[][] result = {{1, 0}, {0, 1}}; // identity matrix.
        long[][] fiboM = {{1, 1}, {1, 0}};

        while (l > 0) {
            if (l%2 == 1) {
                multMatrix(result, fiboM);
            }
            l = l / 2;
            multMatrix(fiboM, fiboM);
        }

        return result[1][0];
    }

    private static void multMatrix(long[][] result, long[][] fiboM) {
        long a = (result[0][0]%mod * fiboM[0][0]%mod)%mod +  (result[0][1]%mod * fiboM[1][0]%mod)%mod;
        long b = (result[0][0]%mod * fiboM[0][1]%mod)%mod + ( result[0][1]%mod * fiboM[1][1]%mod)%mod;
        long c = (result[1][0]%mod * fiboM[0][0]%mod)%mod + ( result[1][1]%mod * fiboM[0][1]%mod)%mod;
        long d = (result[1][0]%mod * fiboM[0][1]%mod)%mod +  (result[1][1]%mod * fiboM[1][1]%mod)%mod;

        result[0][0] = a;
        result[0][1] = b;
        result[1][0] = c;
        result[1][1] = d;
    }
    
    
	static int[] sieve(int n,int[] arr)
	{
		for(int i=2;i*i<=n;i++)
		{
			if(arr[i]==0)
			{
				for(int j=i*2;j<=n;j+=i)
					arr[j]=1;
			}
		}
		return arr;
	}
	
	static boolean isPal(String s)
	{
		for(int i=0, j=s.length()-1;i<=j;i++,j--)
		{
			if(s.charAt(i)!=s.charAt(j)) return false;
		}
		return true;
	}
	public static String rev(String s)
	{
		StringBuilder sb=new StringBuilder(s);
		sb.reverse();
		return sb.toString();
	}
	    
	static long lcm(long a, long b)
	{
	    return a * (b / gcd(a, b));
	}
	
	static long gcd(long a, long b)
	{
	    while (b > 0)
	    {
	        long temp = b;
	        b = a % b; // % is remainder
	        a = temp;
	    }
	    return a;
	}
	static long modulo(long a,long b,long c) {
		long x=1;
		long y=a;
		while(b > 0){
			if(b%2 == 1){
				x=(x*y)%c;
			}
			y = (y*y)%c; // squaring the base
			b /= 2;
		}
		return  x%c;
	}
	public static void debug(Object... o) {
		System.out.println(Arrays.deepToString(o));
	}
	static class Pair implements Comparable<Pair>{
		int x;
		int y;
		int i;
		Pair(int xx,int yy){
			x=xx;
			y=yy;
		}
		public Pair() {
			// TODO Auto-generated constructor stub
		}
		@Override
		public int compareTo(Pair o) {
			return Integer.compare(this.x, o.x);
		}
	}

	static class InputReader {
		public BufferedReader reader;
		public StringTokenizer tokenizer;

		public InputReader(InputStream inputstream) {
			reader = new BufferedReader(new InputStreamReader(inputstream));
			tokenizer = null;
		}

		public String nextLine(){
			String fullLine=null;
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					fullLine=reader.readLine();
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
				return fullLine;
			}
			return fullLine;
		}
		public String next() {
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					tokenizer = new StringTokenizer(reader.readLine());
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			}
			return tokenizer.nextToken();
		}
		public long nextLong() {
			return Long.parseLong(next());
		}
		public int nextInt() {
			return Integer.parseInt(next());
		}
	}
	
}
