N, M = map(int, input().split())
arr = list(map(int, input().split()))

# Algo
for _ in range(M):
    B, S = map(int, input().split())
    left, right = 0, N
    all_cnt, peak_cnt = 0, 0
    for t in range(1, 99999):
        C = B**t + S
        right = N-1
        if C > arr[-1]:  # Quick jump.
            left = N
        while left <= right:
            mid = (left + right) // 2
            val = arr[mid]
            if C < val:
                right = mid - 1
            elif C > val:
                left = mid + 1
            else:
                # Count identical value sequence.
                cnt = 0
                i = mid
                while i >= 0 and arr[i] == val:
                    i -= 1
                    cnt += 1
                i = mid+1
                while i < N and arr[i] == val:
                    i += 1
                    cnt += 1
                left = i
                all_cnt += cnt
                peak_cnt = max(peak_cnt, cnt)
                break
        # No more data.
        if left >= N or B < 2:
            print(all_cnt, peak_cnt)
            break