#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;
const int M = 1e5;
int t;
long long c[N];
long long sub[N];
long long ans[N];
int n;

int main() {
  scanf("%d", &t);
  for (int _ = 1; _ <= t; ++_) {
    memset(c, 0, sizeof(c));
    memset(ans, 0, sizeof(ans));
    memset(sub, 0, sizeof(sub));
    scanf("%d", &n);
    for (int i = 0; i < n; ++i) {
      int a, x;
      scanf("%d%d", &a, &x);
      c[a] += x;
    }
    unsigned long long bits = 0;
    unsigned long long ww = 1ull << 63;
    int i;
    for (i = 1e5; i >= 0; --i) {
      if (bits & ww) break;
      bits <<= 1;
      if (c[i]) {
        if (bits <= c[i]) bits = c[i] & 1;
        else bits -= c[i];
      }
    }
    for (int j = 1; bits; j++, bits >>= 1)
      ans[i + j] = bits & 1;
    for (; i >= 0; --i) {
      if (c[i]) 
        sub[i] = c[i];
    }
    long long carry = 0;
    for (int j = 0; j <= M; ++j) {
      sub[j] += carry;
      carry = sub[j] / 2;
      sub[j] &= 1;
    }
    long long cr = 0;
    for (int j = 0; j <= M; ++j) {
      ans[j] -= cr + sub[j];
      cr = 0;
      while (ans[j] < 0) ans[j] += 2, cr++;
    }
    printf("Case #%d: ", _);
    bool dd = 0;
    for (int j = M; j >= 0; --j) {
      if (ans[j]) {
        for (int k = j; k >= 0; --k)
          printf("%lld", ans[k]);
        puts("");
        dd = 1;
        break;
      }
    }
    if (!dd) puts("0");
  }
  return 0;
}
