#include using namespace std; using ll=long long; using ld=long double; int nibutan(int n, vector A, ld key){ int ok=n; int ng=-1; while(ok-ng>1){ int mid=(ok+ng)/2; if(A[mid]>key){ ok=mid; }else{ ng=mid; } } return ok; } class HLD{ public: int size[200009]; int inv[200009]; void start(int n){ for(int i=1;i<=n;i++){ size[i]=0; } } void getsize(int n, vector> G, int pos, int par){ if(G[pos].size()==1){ size[pos]=1; return; } for(int i:G[pos]){ if(i==par){ continue; } getsize(n, G, i, pos); size[pos]+=size[i]; } return; } int parent[200009]; int heavyparent[200009]; void Decomposition(int n, vector> G, int pos, int par, int &id){ if(par==-1){ parent[id]=-1; heavyparent[id]=id; } inv[pos]=id; int maxid=-1; for(int r:G[pos]){ if(r!=par){ if(maxid==-1){ maxid=r; }else{ if(size[maxid]> getrange(int u, int v){ u=inv[u]; v=inv[v]; vector> ans; int nu=u; int nv=v; while(heavyparent[nu]!=heavyparent[nv]){ if(nu; int main(){ int T; cin >> T; cout << fixed << setprecision(15); for(int o=0;o> N >> M >> K; ll Q=K/M; ll R=K%M; if(K<=(N-1)*M){ ld invN=1/(ld)N; ld invM=1/(ld)M; cout << 1-invN*invM*(Q+min((ll)1,R))<< endl; }else{ if(K==(N-1)*M+1){ ld invN=1/(ld)N; ld invM=1/(ld)M; cout << 1-invM<< endl; }else{ ld invM=1/(ld)M; cout << invM*(M-R) << endl; } } } }