Consider the infinite x$x$ axis. There are N$N$ impacts on this X-axis at integral points (X1$X_1$,X2$X_2$,....XN$X_N$)  (all distinct) . An impact at a point X$X$i propagates such that at a point X$X$0, the effect of the impact is K|Xi−X0|$K^{|X_i - X_0|}$. Given the point X0$X_0$, N$N$ and K$K$. Assume the total impact on X0$X_0$ is M$M$, find if it is possible to do so.Note: You are not required to find the set X

Formally print "yes" if this is possible and "no" if not possible.

-----Input:-----
- First line will contain T$T$, number of testcases. Then the testcases follow. 
-  Each testcase contains of a single line of input, four integers N$N$,K$K$,M$M$,X$X$0 

-----Output:-----
-  The output of each test case is either "yes" or "no"

-----Constraints -----
-  1≤T≤1000$1\leq T \leq 1000$
-  1≤N≤100$1\leq N \leq 100$
-  1≤K≤1000$1\leq K \leq 1000$
-  1≤M≤1018$1\leq M \leq 10^{18}$
-  −109≤X0≤109$-10^9 \leq X_0 \leq 10^9$ 

-----Sample Input:-----
	2

4 3 10 10

2 3 10 10

-----Sample Output:-----
	no

yes

```python

USER_FILENAME = "<user_code>"
import sys, json, builtins
import math, heapq, bisect, itertools, functools, collections, statistics, fractions, decimal, operator, array, random, re, string, os, pathlib
try:
    import resource as _res
except Exception:
    _res = None
from collections import Counter, defaultdict, deque, OrderedDict
from functools import lru_cache, reduce
from itertools import accumulate, permutations, combinations, product
from math import gcd, ceil, floor, sqrt
from decimal import Decimal
try:
    from typing import *
except Exception:
    pass
try:
    sys.setrecursionlimit(1_000_000)
except Exception:
    pass
try:
    import site as _site
    try:
        _sys_sites = _site.getsitepackages() if hasattr(_site, "getsitepackages") else []
        for _p in _sys_sites:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
    try:
        _usp = _site.getusersitepackages()
        if isinstance(_usp, str):
            _usp = [_usp]
        for _p in _usp:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
except Exception:
    pass

ns = {"__name__": "__main__"}
for _k, _v in list(globals().items()):
    if not _k.startswith("_"):
        ns[_k] = _v
_CODE = 'T = int(input())\r\nfor i in range(T):\r\n    l = list(map(int, input().split()))\r\n    n, k, m, x = l[0], l[1], l[2], l[3]\r\n    if k == 1:\r\n        if n == m:\r\n            print("yes")\r\n        else:\r\n            print("no")\r\n    elif m % k > 1:\r\n        print("no")\r\n    elif k == 2:\r\n        stack = []\r\n        var = 0\r\n        while m != 0:\r\n            var += m % k\r\n            stack.append(m % k)\r\n            m //= k\r\n        if var > n:\r\n            print("no")\r\n        elif var == n:\r\n            print("yes")\r\n        else:\r\n            for p in range(1000):\r\n                for q in range(2, len(stack)):\r\n                    if stack[q - 1] == 0 and stack[q] >= 1:\r\n                        stack[q-1] = 2\r\n                        stack[q] -= 1\r\n                        var += 1\r\n                        if var == n:\r\n                            print("yes")\r\n            if var < n:\r\n                print("no")\r\n    else:\r\n        temp = 0\r\n        rog = 1\r\n        while m != 0:\r\n            if m % k > 2:\r\n                rog = 0\r\n                print("no")\r\n            temp += m % k\r\n            m //= k\r\n        if rog:\r\n            if temp == n:\r\n                print("yes")\r\n            else:\r\n                print("no")\r\n\r\n'
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

```

Measured memory_bytes: 13703