#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <cmath>
#include <sstream>
#include <iomanip>
#include <queue>
#include <ctime>
using namespace std;
template <class T> void checkmin(T &t,T x){if (x < t) t = x;}
template <class T> void checkmax(T &t,T x){if (x > t) t = x;}
template <class T> void _checkmin(T &t, T x){if (t == -1) t = x; if (x < t) t = x;}
template <class T> void _checkmax(T &t, T x){if (t == -1) t = x; if (x > t) t = x;}
typedef pair <int,int> PII;
typedef pair <double,double> PDD;
typedef long long lld;
#define foreach(it,v) for (__typeof((v).begin()) it = (v).begin();it != (v).end();it++)
#define DEBUG(a) cout << #a" = " << (a) << endl;
#define DEBUGARR(a, n) for (int i = 0; i < (n); i++) { cout << #a"[" << i << "] = " << (a)[i] << endl; }
const int N = 1005;
int Tc;
int f[N][N];
int g[N][N][2];
int v[N][N];
char s[N];
int p, Mod, n;

void output() {
	string ret;
	int st = 0;
	int j = 0;
	while (ret.size() < f[n][p]) {
		for (int w = 9; ~w; w--) {
			bool flag = 0;
			for (int i = st ; i < n; i++) {
				int dig = s[i + 1] - '0';
				if (g[i][j][1] && dig == w) {
					flag = 1;
					st = i + 1;
					j = ((j * 10) + dig) % Mod;
					break;
				} else if (!g[i][j][0]) {
					break;
				}
			}
			if (flag) {
				ret += (char)(w + '0');
				break;
			}
		}
	}
	printf("%s\n", ret.c_str());
}

int main(){
#ifdef cwj
	freopen("in", "r", stdin);
#endif
	scanf("%d", &Tc);
	while (Tc--) {
		scanf("%s%d%d", s + 1, &p, &Mod);
		n = strlen(s + 1);
		for (int i = 0; i <= n; i++) {
			fill(f[i], f[i] + Mod, -1);
			fill(v[i], v[i] + Mod, 0);
			for (int j = 0; j < Mod; j++) {
				g[i][j][0] = g[i][j][1] = 0;
			}
		}
		f[0][0] = 0;
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < Mod; j++) {
				int dig = s[i + 1] - '0';
				if (f[i][j] != -1) {
					if (!(!f[i][j] && !dig)) {
						checkmax(f[i + 1][(j * 10 + dig) % Mod], f[i][j] + 1);
					}
					checkmax(f[i + 1][j], f[i][j]);
				}
			}
		}
		if (f[n][p] == -1 || f[n][p] == 0) {
			printf("Not found\n");
		} else {
			v[n][p] = 1;
			for (int i = n - 1; ~i; i--) {
				for (int j = 0; j < Mod; j++) {
					int dig = s[i + 1] - '0';
					if (f[i][j] != -1) {
						int y = (j * 10 + dig) % Mod;
						if (!(!f[i][j] && !dig) && f[i + 1][y] == f[i][j] + 1 && v[i + 1][y]) {
							v[i][j] = 1;
							g[i][j][1] = 1;
						} else {
							g[i][j][1] = 0;
						}
						if (f[i + 1][j] == f[i][j] && v[i + 1][j]) {
							v[i][j] = 1;
							g[i][j][0] = 1;
						} else {
							g[i][j][0] = 0;
						}
					}
				}
			}
			output();
		}
	}
}
