-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.*;
import java.util.*;
public class Main {
    public static void main(String args[])
    {
        FastReader input=new FastReader();
        PrintWriter out=new PrintWriter(System.out);
        int T=1;
        while(T-->0)
        {
            long b1=input.nextInt();
            long q=input.nextInt();
            long l=input.nextInt();
            int m=input.nextInt();
            HashSet<Long> set=new HashSet<>();
            for(int i=0;i<m;i++)
            {
                set.add((long)input.nextInt());
            }
            if(b1==0 && q==0)
            {
                if(set.contains(0l))
                {
                    out.println(0);
                }
                else
                {
                    out.println("inf");
                }
            }
            else if(b1==0)
            {
                if(set.contains(0l))
                {
                    out.println(0);
                }
                else
                {
                    out.println("inf");
                }
            }
            else if(q==0)
            {
                if(Math.abs(b1)>l)
                {
                    out.println(0);
                }
                else
                {
                    if(!set.contains(0l))
                    {
                        out.println("inf");
                    }
                    else
                    {
                        if(set.contains(b1))
                        {
                            out.println(0);
                        }
                        else
                        {
                            out.println(1);
                        }
                    }
                }
            }
            else
            {
                if(q==1 || q==-1)
                {
                    if(b1>0 && q>0)
                    {
                        if(Math.abs(b1)>l)
                        {
                            out.println(0);
                        }
                        else
                        {
                            if(set.contains(b1))
                            {
                                out.println(0);
                            }
                            else
                            {
                                out.println("inf");
                            }
                        }
                    }
                    else
                    {
                        if(Math.abs(b1)>l)
                        {
                            out.println(0);
                        }
                        else
                        {
                            if(set.contains(b1) && set.contains(-b1))
                            {
                                out.println(0);
                            }
                            else
                            {
                                out.println("inf");
                            }
                        }
                    }
                }
                else
                {
                    ArrayList<Long> list=new ArrayList<>();
                    long v=b1;
                    while(true)
                    {
                        if(Math.abs(v)>l)
                        {
                            break;
                        }
                        list.add(v);
                        v*=q;
                    }
                    int c=0;
                    for(int i=0;i<list.size();i++)
                    {
                        if(set.contains(list.get(i)))
                        {
                            c++;
                        }
                    }
                    out.println(list.size()-c);
                }
            }
        }
        out.close();
    }
    static class FastReader
    {
        BufferedReader br;
        StringTokenizer st;
        public FastReader()
        {
            br = new BufferedReader(new InputStreamReader(System.in));
        }
        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
        int nextInt()
        {
            return Integer.parseInt(next());
        }
        long nextLong()
        {
            return Long.parseLong(next());
        }
        double nextDouble()
        {
            return Double.parseDouble(next());
        }
        String nextLine()
        {
            String str="";
            try
            {
                str=br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
    }
}