#include<bits/stdc++.h>
using namespace std;
#define int long long
struct xy_vec{
int x,y;
int operator* (const xy_vec b) const{
return x*b.y-y*b.x;
}
}arr[100005];
xy_vec nul;
int mianji(int x1,int y1,int x2,int y2,int x3,int y3){
xy_vec AB,AC;
AB.x=x2-x1,AB.y=y2-y1;
AC.x=x3-x1,AC.y=y3-y1;
return abs(AB*AC);
}
signed main(){
int T;
cin>>T;
while(T--){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>arr[i].x>>arr[i].y;
}
int res=0,ans=0;
for(int i=1;i<=k+2;i++){
res+=arr[i]*arr[i%(k+2)+1];
}
res=abs(res);
ans=res;
int now=2,tm=0;
for(int i=1;i<=n;i++){
if(i!=1){
res-=mianji(arr[i-1].x,arr[i-1].y,arr[now].x,arr[now].y,arr[(now+k-1)%n+1].x,arr[(now+k-1)%n+1].y);
res+=mianji(arr[i].x,arr[i].y,arr[now].x,arr[now].y,arr[(now+k-1)%n+1].x,arr[(now+k-1)%n+1].y);
}
if(now<=i){
res-=mianji(arr[i].x,arr[i].y,arr[now].x,arr[now].y,arr[now%n+1].x,arr[now%n+1].y);
res+=mianji(arr[i].x,arr[i].y,arr[(now+k-1)%n+1].x,arr[(now+k-1)%n+1].y,arr[(now+k)%n+1].x,arr[(now+k)%n+1].y);
now=now%n+1;
}
while(tm<=1&&now<=n&&mianji(arr[i].x,arr[i].y,arr[now].x,arr[now].y,arr[now%n+1].x,arr[now%n+1].y)<=
mianji(arr[i].x,arr[i].y,arr[(now+k-1)%n+1].x,arr[(now+k-1)%n+1].y,arr[(now+k)%n+1].x,arr[(now+k)%n+1].y)){
res-=mianji(arr[i].x,arr[i].y,arr[now].x,arr[now].y,arr[now%n+1].x,arr[now%n+1].y);
res+=mianji(arr[i].x,arr[i].y,arr[(now+k-1)%n+1].x,arr[(now+k-1)%n+1].y,arr[(now+k)%n+1].x,arr[(now+k)%n+1].y);
now=now%n+1;
if(now==1) tm++;
if(tm>1) break;
}
ans=max(ans,res);
}
double tt=(double)ans/2.0;
printf("%.1lf\n",tt);
}
return 0;
}