/*
 * File: WeNeedMedicine.cpp
 * Author: Magica
 * Date: 2014.09.07
 ****************************************/
#include <bits/stdc++.h>
using namespace std;
#define Multicase for (int TestCase = 1, TestCaseSum = xint(); TestCase <= TestCaseSum; ++TestCase)
#define __cin__ { cin.sync_with_stdio(0); cin.tie(0); }
#define inject(x) { cerr << "Function: " << __FUNCTION__ << ", Line: " << __LINE__ << ", " << #x << ": " << (x) << endl; }
#define mp make_pair
#define pb push_back
#define init(range, val) memset(range, val, sizeof(range))
typedef pair<int, int> pii;
typedef long long ll;
char buf;
inline char xchar() { while (buf = getchar(), isspace(buf)); return buf; }
inline int xint() { while (buf = getchar(), buf < '0' || buf > '9'); int x = buf - '0'; for (; buf = getchar(), buf >= '0' && buf <= '9'; x = x * 10 + buf - '0'); return x; }
inline ll xll() { while (buf = getchar(), buf < '0' || buf > '9'); ll x = buf - '0'; for (; buf = getchar(), buf >= '0' && buf <= '9'; x = x * 10 + buf - '0'); return x; }
inline string xstring() { while (buf = getchar(), buf == ' ' || buf == '\n'); string x = ""; for (x += buf; buf = getchar(), buf != ' ' && buf != '\n' && buf != '\r'; x += buf); return x; }
inline string xline() { while (buf = getchar(), buf == ' ' || buf == '\n'); string x = ""; for (x += buf; buf = getchar(), buf != '\n' && buf != '\r'; x += buf); return x; }
ll got[200005];
int f[200005][70];
int w[405], t[405];
#define lowbit(x) (x & (-x))
int main()
{
    bool first;
    int i, j, n, q, a, b, idx;
    ll ls, k;
    Multicase {
        init(got, 0);
        init(f, 0);
        got[0] = 1;
        n = xint(), q = xint();
        for (i = 1; i <= n; ++i) {
            w[i] = xint(), t[i] = xint();
            for (j = 200000; j >= t[i]; --j) {
                ls = got[j];
                got[j] |= got[j - t[i]] << w[i];
                for (k = got[j] ^ ls; k; k -= lowbit(k))
                    f[j][__builtin_ctzll(k)] = i;
            }
        }
        for (i = 0; i < q; ++i) {
            a = xint(), b = xint();
            if (f[b][a]) {
                for (first = true; f[b][a]; a -= w[idx], b -= t[idx]) {
                    printf(first ? "%d" : " %d", idx = f[b][a]);
                    first = false;
                }
                printf("\n");
            }
            else
                puts("No solution!");
        }
    }
    return 0;
}
