/*
原石 n * 10个
k颗 -> 一次 -> 90保底 * 7次到满命 -> 630
即可推出公式为 n * 10 / 630 >= k
*/
#include <bits/stdc++.h>
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
typedef long long ll;
void solve() {
ll n, k; cin >> n >> k;
cout << (n * 10 / 630 >= k ? "SHENLILINHUA WO LAI LA!!!\n" : "SHENLILINHUA DENG DENG WO!!!\n");
}
int main()
{
IO;
int _; cin >> _;
while(_--) {
solve();
}
return 0;
}
/*
lower_bound(b + 1, b + n + 1, a[i]) - b ->这里是返回第一个大于或等于被查的数的索引
upper_bound((b + 1, b + n + 1, a[i]) - b -> 则是第一个大于的被查的数的索引
lower_bound -> greater<int>()这个代替a[i]就是第一个小于或等于被查数的索引 and upper_bound -> greater<int>() 第一个小于被查数的值
*/
#include <bits/stdc++.h>
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int N = 1e5 + 5;
int a[N], b[N], n, cnt, k;
bool vis[N];
int main()
{
IO;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i]; b[i] = a[i];
}
sort(b + 1, b + n + 1);
for (int i = 1; i <= n; i++) {
a[i] = lower_bound(b + 1, b + n + 1, a[i]) - b;
}
cnt = n;
for (int i = 1; i <= n; i++) {
if (!vis[i]) {
--cnt;
k = i;
while (!vis[k]) {
vis[k] = 1; k = a[k];
}
}
}
return cout << cnt << '\n', 0;
}