-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


import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.*;

public class B789 {
	public static void main(String[] args) {
		InputReader in = new InputReader();
		PrintWriter out = new PrintWriter(System.out);
		final long start = System.currentTimeMillis();		
		new Task1().solve(in, out);
		@SuppressWarnings("unused")
		final long duration = System.currentTimeMillis()-start;
		out.close();
	}

	static class Task1{
		static final int MOD = 1000000007;
		static final int MAX = 101;
		ArrayList<Integer> primes;
		boolean isPrime[];

		ArrayList<Long> powers;
		public void solve(InputReader in, PrintWriter out){
			long b1 = in.nextLong(), q = in.nextLong(), l = in.nextLong();
			int m = in.nextInt();
			long[] bad = new long[m];
			for(int i=0; i<m; i++){
				bad[i] = in.nextLong();
			}
			Arrays.sort(bad);

			powers = new ArrayList<Long>();
			long curr = b1, count = 0;
			for(int i=0; Math.abs(curr)<=l; i++){
				if(Arrays.binarySearch(bad, curr)<0)
					powers.add(curr);
				curr = curr*q;
				if(count>MAX){
					if(powers.size()>0)
						out.println("inf");
					else
						out.println(0);
					return;
				}
				count++;
			}

			out.println(powers.size());
		}

        void sieve(){
            isPrime = new boolean[MAX];
			primes =  new ArrayList<Integer>();
			Arrays.fill(isPrime, true);
			isPrime[0] = isPrime[1] = false;
			primes.add(2);

			for(int i=4; i<MAX; i+=2)
				isPrime[i] = false;

			for(int i=3; i<MAX; i+=2){
				if(isPrime[i]){
					primes.add(i);
					for(int j=i+i; j<MAX; j+=i)
						isPrime[j] = false;
				}
			}
        }
		long expo(long a, long b){
			long result = 1;
			while(b>0){
				if(b%2==1) result *= a;
				b = b>>1;
				a *= a;
			}
			return result;
		}
		long fibonacci(long n){
			if(n==0) return 0;
			long a=0, b=1, c=1, d=1, e=n-2;
			long a1, b1, c1, d1, a2=0, b2=1, c2=1, d2=1;
			
			while(e>0){
				if(e%2==1){
					a1 = (a*a2+b*c2)%MOD;
					c1 = (c*a2+d*c2)%MOD;
					b1 = (a*b2+ b*d2)%MOD;
					d1 = (b2*c+ d*d2)%MOD;
					a=a1; b=b1; c=c1; d= d1;
				}
				a1 = (a2*a2+b2*c2)%MOD;
				c1 = (c2*a2+d2*c2)%MOD;
				b1 = (a2*b2+ b2*d2)%MOD;
				d1 = (b2*c2+ d2*d2)%MOD;
				a2=a1; b2=b1; c2=c1; d2= d1;
				e /= 2;
			}
			return d;
		}
	}

	static class InputReader{
		final InputStream stream;
		final byte[] buf = new byte[8192];
		int curChar, numChars;
		SpaceCharFilter filter;

		public InputReader(){
			this.stream = System.in;
		}

		public int read(){
			if(numChars == -1){
				throw new InputMismatchException();
			}
			if(curChar >= numChars){
				curChar = 0;
				try{
					numChars = stream.read(buf);
				} catch(IOException e){
					throw new InputMismatchException();
				}
				if(numChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}

		public int nextInt(){
			int c = read();
			while(isSpaceChar(c))
				c = read();
			int sgn = 1;
			if(c == '-'){
				sgn = -1;
				c = read();
			}
			int res = 0;
			do{
				if(c<'0' || c>'9'){
					System.out.println("beta");
					throw new InputMismatchException();}
				res *= 10;
				res += c - '0';
				c = read();
			} while(!isSpaceChar(c));
			return res*sgn;
		}

		public long nextLong(){
			int c = read();
			while(isSpaceChar(c))
				c = read();
			int sgn = 1;
			if(c == '-'){
				sgn = -1;
				c = read();
			}
			long res = 0;
			do{
				if(c<'0' || c>'9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} while(!isSpaceChar(c));
			return res*sgn;
		}

		public String next(){
			int c = read();
			while(isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do{
				res.appendCodePoint(c);
				c = read();
			}while(!isSpaceChar(c));
			return res.toString();
		}

		public boolean isSpaceChar(int c){
			if(filter != null)
				return filter.isSpaceChar(c);
			return c==' ' || c=='\n' || c=='\r' || c=='\t' || c==-1;
		}

		public interface SpaceCharFilter{
			public boolean isSpaceChar(int ch);
		}
	}

}