#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1<<17;
const int Q = 1<<14;
const int MAX = 1<<10;
int n,q,sq;
int a[N];
int cnt[MAX];
int ans[Q];
struct query {
int l, r, num;
bool operator <(const query &k) const {
int block1, block2;
block1 = l/sq;
block2 = k.l/sq;
if(block1<block2) return true;
if(block1>block2) return false;
return r<k.r;
}
}b[Q];
void input() {
int i;
memset(cnt,0,sizeof(cnt));
scanf("%d %d", &n, &q);
sq=sqrt(n);
for(i=1;i<=n;i++) {
scanf("%d", &a[i]);
}
for(i=1;i<=q;i++) {
scanf("%d %d", &b[i].l, &b[i].r);
b[i].num=i;
b[i].l++;
b[i].r++;
}
sort(b+1,b+1+q);
}
void solve() {
int l,r,i,j,last;
l=1;
r=1;
cnt[a[1]]++;
for(i=1;i<=q;i++) {
while(l>b[i].l) {
l--;
cnt[a[l]]++;
}
while(r>b[i].r) {
cnt[a[r]]--;
r--;
}
while(r<b[i].r) {
r++;
cnt[a[r]]++;
}
while(l<b[i].l) {
cnt[a[l]]--;
l++;
}
ans[b[i].num]=1000000;
last=-1;
for(j=1;j<=1000;j++) {
if(cnt[j]>1) {
ans[b[i].num]=0;
break;
}
if(cnt[j]) {
if(last==-1) last=j;
else {
ans[b[i].num]=min(ans[b[i].num],j-last);
last=j;
}
}
}
}
for(i=1;i<=q;i++) printf("%d\n", ans[i]);
}
int main() {
int i,tests;
scanf("%d", &tests);
for(i=1;i<=tests;i++) {
input();
printf("Case %d:\n", i);
solve();
}
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDE8PDE3Owpjb25zdCBpbnQgUSA9IDE8PDE0Owpjb25zdCBpbnQgTUFYID0gMTw8MTA7CgppbnQgbixxLHNxOwppbnQgYVtOXTsKaW50IGNudFtNQVhdOwppbnQgYW5zW1FdOwoKc3RydWN0IHF1ZXJ5IHsKICAgIGludCBsLCByLCBudW07CgogICAgYm9vbCBvcGVyYXRvciA8KGNvbnN0IHF1ZXJ5ICZrKSBjb25zdCB7CiAgICAgICAgaW50IGJsb2NrMSwgYmxvY2syOwogICAgICAgIGJsb2NrMSA9IGwvc3E7CiAgICAgICAgYmxvY2syID0gay5sL3NxOwogICAgICAgIGlmKGJsb2NrMTxibG9jazIpIHJldHVybiB0cnVlOwogICAgICAgIGlmKGJsb2NrMT5ibG9jazIpIHJldHVybiBmYWxzZTsKICAgICAgICByZXR1cm4gcjxrLnI7CiAgICB9Cn1iW1FdOwoKdm9pZCBpbnB1dCgpIHsKICAgIGludCBpOwogICAgbWVtc2V0KGNudCwwLHNpemVvZihjbnQpKTsKICAgIHNjYW5mKCIlZCAlZCIsICZuLCAmcSk7CiAgICBzcT1zcXJ0KG4pOwogICAgZm9yKGk9MTtpPD1uO2krKykgewogICAgICAgIHNjYW5mKCIlZCIsICZhW2ldKTsKICAgIH0KICAgIGZvcihpPTE7aTw9cTtpKyspIHsKICAgICAgICBzY2FuZigiJWQgJWQiLCAmYltpXS5sLCAmYltpXS5yKTsKICAgICAgICBiW2ldLm51bT1pOwogICAgICAgIGJbaV0ubCsrOwogICAgICAgIGJbaV0ucisrOwogICAgfQogICAgc29ydChiKzEsYisxK3EpOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgaW50IGwscixpLGosbGFzdDsKICAgIGw9MTsKICAgIHI9MTsKICAgIGNudFthWzFdXSsrOwoKICAgIGZvcihpPTE7aTw9cTtpKyspIHsKICAgICAgICB3aGlsZShsPmJbaV0ubCkgewogICAgICAgICAgICBsLS07CiAgICAgICAgICAgIGNudFthW2xdXSsrOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUocj5iW2ldLnIpIHsKICAgICAgICAgICAgY250W2Fbcl1dLS07CiAgICAgICAgICAgIHItLTsKICAgICAgICB9CgogICAgICAgIHdoaWxlKHI8YltpXS5yKSB7CiAgICAgICAgICAgIHIrKzsKICAgICAgICAgICAgY250W2Fbcl1dKys7CiAgICAgICAgfQoKICAgICAgICB3aGlsZShsPGJbaV0ubCkgewogICAgICAgICAgICBjbnRbYVtsXV0tLTsKICAgICAgICAgICAgbCsrOwogICAgICAgIH0KCiAgICAgICAgYW5zW2JbaV0ubnVtXT0xMDAwMDAwOwogICAgICAgIGxhc3Q9LTE7CgogICAgICAgIGZvcihqPTE7ajw9MTAwMDtqKyspIHsKICAgICAgICAgICAgaWYoY250W2pdPjEpIHsKICAgICAgICAgICAgICAgIGFuc1tiW2ldLm51bV09MDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZihjbnRbal0pIHsKICAgICAgICAgICAgICAgIGlmKGxhc3Q9PS0xKSBsYXN0PWo7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBhbnNbYltpXS5udW1dPW1pbihhbnNbYltpXS5udW1dLGotbGFzdCk7CiAgICAgICAgICAgICAgICAgICAgbGFzdD1qOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvcihpPTE7aTw9cTtpKyspIHByaW50ZigiJWRcbiIsIGFuc1tpXSk7Cn0KCmludCBtYWluKCkgewogICAgaW50IGksdGVzdHM7CgogICAgc2NhbmYoIiVkIiwgJnRlc3RzKTsKCiAgICBmb3IoaT0xO2k8PXRlc3RzO2krKykgewogICAgICAgIGlucHV0KCk7CiAgICAgICAgcHJpbnRmKCJDYXNlICVkOlxuIiwgaSk7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=