#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#include <cmath>
#include <iomanip>
#include <complex>
using namespace std;
#define REP(i,n) for (int i=0;i<(n);++i)
#define rep(i,a,b) for(int i=a;i<(b);++i)
template<class T> inline bool chmin(T &a, T b){ if(a > b) { a = b; return true;} return false;}
template<class T> inline bool chmax(T &a, T b){ if(a < b) { a = b; return true;} return false;}
using ll = long long;
constexpr long long INF = 1LL << 62;
constexpr int MOD = 1e9 + 7;


constexpr double EPS = 1e-10;
using Point = complex<double>;
using Line  = pair<Point, Point>;
using Polygon = vector<Point>;
bool compare(const Point &a, const Point &b) { // x ascending order
    if(a.real() != b.real()) return a.real() < b.real();
    return a.imag() < b.imag();
};

double dot(Point p, Point q) { return (conj(p) * q).real(); }
double cross(Point p, Point q) { return (conj(p) * q).imag(); }

double area(Polygon &ps) {
    double res = 0.0;
    for(int i = 0; i < (int)ps.size(); ++i) 
        res += cross(ps[i], ps[(i+1)%(int)ps.size()]);
    return abs(res) / 2.0;
}

int main() {
    cin.tie(0); ios_base::sync_with_stdio(false);
    cout << fixed << setprecision(1);
    int n, cnt = 1;
    while(true) {
        cin >> n; if(n == 0) break;

        double x,y;
        Polygon ps;
        for(int i=0; i < n; ++i) {
            cin >> x >> y;
            ps.emplace_back(x, y);
        }
        cout << cnt << " " << area(ps) << '\n';
        ++cnt;
    }
    return 0;
}

