#include <bits/stdc++.h>
using namespace std;
inline bool EQ(double a, double b) { return fabs(a - b) < 1e-9; }
unordered_map<long long, int> vis, dp;
int main() {
  long long b, q, l;
  int m, x;
  scanf("%lld%lld%lld", &b, &q, &l);
  scanf("%d", &m);
  for (int i = 0; i < m; ++i) {
    scanf("%d", &x);
    vis[x] = 1;
  }
  if (b == 0) {
    if (vis[b])
      puts("0");
    else
      puts("inf");
    return 0;
  }
  if (q == 0) {
    if (vis[b] && vis[0])
      puts("0");
    else if (vis[0]) {
      if (abs(b) <= l)
        puts("1");
      else
        puts("0");
    } else {
      if (abs(b) <= l)
        puts("inf");
      else
        puts("0");
    }
    return 0;
  }
  if (q == 1) {
    if (vis[b])
      puts("0");
    else if (abs(b) <= l)
      puts("inf");
    else
      puts("0");
    return 0;
  }
  if (q == -1) {
    if (abs(b) > l)
      puts("0");
    else {
      if (vis[b] && vis[-b])
        puts("0");
      else
        puts("inf");
    }
    return 0;
  }
  int res = 0;
  while (abs(b) <= l) {
    if (vis[b] == 0) ++res;
    b *= q;
  }
  if (res == -1)
    puts("inf");
  else
    printf("%d\n", res);
  return 0;
}
