#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
struct pct{
double x1;
double y1;
double x2;
double y2;
double x3;
double y3;
}v[110];
struct pctt{
double x;
double y;
}p1,p2,p3;
int p,n,k,i,j,np,nr,viz[110];
double a,dist,x[110][110];
FILE *f,*g;
double minim(double a,double b){
if(a<b)
return a;
return b;
}
double modul(double a){
if(a<0)
return -a;
return a;
}
double distt(pctt a,pctt b,pctt c ){
double c1 = modul( b.x - c.x );
double c2 = modul( b.y - c.y );
double r1 = modul( b.x - a.x ) / c1;
double h = c2 * r1;
return h + minim( modul( a.y - b.y ), modul( a.y - c.y ) );
}
void dfs(int nod){
viz[nod] = 1;
np++;
for(int i=1;i<=n;i++){
if( i != nod && x[i][nod] <= k && viz[i] == 0 ){
dfs(i);
}
}
}
int main(){
f=fopen("elicoptere.in","r");
g=fopen("elicoptere.out","w");
fscanf(f,"%d%d%d",&p,&n,&k);
for(i=1;i<=n;i++){
fscanf(f,"%lf%lf%lf%lf%lf%lf",&v[i].x1,&v[i].y1,&v[i].x2,&v[i].y2,&v[i].x3,&v[i].y3);
}
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++){
a=200000000;
if( v[i].x1 == v[j].x1 )
a = minim( a, modul( v[i].y1 - v[j].y1 ) );
if( v[i].x1 == v[j].x2 )
a = minim( a, modul( v[i].y1 - v[j].y2 ) );
if( v[i].x1 == v[j].x3 )
a = minim(a, modul( v[i].y1 - v[j].y3 ) );
if( v[i].x2 == v[j].x1 )
a = minim(a, modul( v[i].y2 - v[j].y1 ) );
if( v[i].x2 == v[j].x2 )
a = minim(a, modul( v[i].y2 - v[j].y2 ) );
if( v[i].x2 == v[j].x3 )
a = minim(a, modul( v[i].y2 - v[j].y3 ) );
if( v[i].x3 == v[j].x1 )
a = minim(a, modul( v[i].y3 - v[j].y1 ) );
if( v[i].x3 == v[j].x2 )
a = minim(a, modul( v[i].y3 - v[j].y2 ) );
if( v[i].x3 == v[j].x3 )
a = minim(a, modul( v[i].y3 - v[j].y3 ) );
if( v[i].y1 == v[j].y1 )
a = minim(a, modul( v[i].x1 - v[j].x1 ) );
if( v[i].y1 == v[j].y2 )
a = minim(a, modul( v[i].x1 - v[j].x2 ) );
if( v[i].y1 == v[j].y3 )
a = minim(a, modul( v[i].x1 - v[j].x3 ) );
if( v[i].y2 == v[j].y1 )
a = minim(a, modul( v[i].x2 - v[j].x1 ) );
if( v[i].y2 == v[j].y2 )
a = minim(a, modul( v[i].x2 - v[j].x2 ) );
if( v[i].y2 == v[j].y3 )
a = minim(a, modul( v[i].x2 - v[j].x3 ) );
if( v[i].y3 == v[j].y1 )
a = minim(a, modul( v[i].x3 - v[j].x1 ) );
if( v[i].y3 == v[j].y2 )
a = minim(a, modul( v[i].x3 - v[j].x2 ) );
if( v[i].y3 == v[j].y3 )
a = minim(a, modul( v[i].x3 - v[j].x3 ) );
if( ( v[i].x1 < v[j].x1 && v[i].x1 > v[j].x2 ) || ( v[i].x1 > v[j].x1 && v[i].x1 < v[j].x2 ) ){
p1.x=v[i].x1;
p1.y=v[i].y1;
p2.x=v[j].x1;
p2.y=v[j].y1;
p3.x=v[j].x2;
p3.y=v[j].y2;
a=minim(a, distt(p1,p2,p3) );
}
if( ( v[i].x1 < v[j].x2 && v[i].x1 > v[j].x3 ) || ( v[i].x1 > v[j].x2 && v[i].x1 < v[j].x3 ) ){
p1.x=v[i].x1;
p1.y=v[i].y1;
p2.x=v[j].x2;
p2.y=v[j].y2;
p3.x=v[j].x3;
p3.y=v[j].y3;
a=minim(a, distt(p1,p2,p3) );
}
if( ( v[i].x1 < v[j].x1 && v[i].x1 > v[j].x3 ) || ( v[i].x1 > v[j].x1 && v[i].x1 < v[j].x3 ) ){
p1.x=v[i].x1;
p1.y=v[i].y1;
p2.x=v[j].x1;
p2.y=v[j].y1;
p3.x=v[j].x3;
p3.y=v[j].y3;
a=minim(a, distt(p1,p2,p3) );
}
if( ( v[i].x2 < v[j].x1 && v[i].x2 > v[j].x2 ) || ( v[i].x2 > v[j].x1 && v[i].x2 < v[j].x2 ) ){
p1.x=v[i].x2;
p1.y=v[i].y2;
p2.x=v[j].x1;
p2.y=v[j].y1;
p3.x=v[j].x2;
p3.y=v[j].y2;
a=minim(a, distt(p1,p2,p3) );
}
if( ( v[i].x2 < v[j].x2 && v[i].x2 > v[j].x3 ) || ( v[i].x2 > v[j].x2 && v[i].x2 < v[j].x3 ) ){
p1.x=v[i].x2;
p1.y=v[i].y2;
p2.x=v[j].x2;
p2.y=v[j].y2;
p3.x=v[j].x3;
p3.y=v[j].y3;
a=minim(a, distt(p1,p2,p3) );
}
if( ( v[i].x2 < v[j].x1 && v[i].x2 > v[j].x3 ) || ( v[i].x2 > v[j].x1 && v[i].x2 < v[j].x3 ) ){
p1.x=v[i].x2;
p1.y=v[i].y2;
p2.x=v[j].x1;
p2.y=v[j].y1;
p3.x=v[j].x3;
p3.y=v[j].y3;
a=minim(a, distt(p1,p2,p3) );
}
if( ( v[i].x3 < v[j].x1 && v[i].x3 > v[j].x2 ) || ( v[i].x3 > v[j].x1 && v[i].x3 < v[j].x2 ) ){
p1.x=v[i].x3;
p1.y=v[i].y3;
p2.x=v[j].x1;
p2.y=v[j].y1;
p3.x=v[j].x2;
p3.y=v[j].y2;
a=minim(a, distt(p1,p2,p3) );
}
if( ( v[i].x3 < v[j].x1 && v[i].x3 > v[j].x3 ) || ( v[i].x3 > v[j].x1 && v[i].x3 < v[j].x3 ) ){
p1.x=v[i].x3;
p1.y=v[i].y3;
p2.x=v[j].x1;
p2.y=v[j].y1;
p3.x=v[j].x3;
p3.y=v[j].y3;
a=minim(a, distt(p1,p2,p3) );
}
if( ( v[i].x3 < v[j].x2 && v[i].x3 > v[j].x3 ) || ( v[i].x3 > v[j].x2 && v[i].x3 < v[j].x3 ) ){
p1.x=v[i].x3;
p1.y=v[i].y3;
p2.x=v[j].x2;
p2.y=v[j].y2;
p3.x=v[j].x3;
p3.y=v[j].y3;
a=minim(a, distt(p1,p2,p3) );
}
x[i][j] = x[j][i] = a;
}
}
if( p == 1 ){
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++){
if( x[i][j] < k )
nr++;
}
}
fprintf(g,"%d",nr);
return 0;
}
if( p == 2 ){
for(i=1;i<=n;i++){
if(!viz[i]){
np=0;
dfs(i);
nr += np*(np-1)/2;
}
}
fprintf(g,"%d",nr);
return 0;
}
if( p == 3 ){
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++){
if( x[i][j] < k )
dist += x[i][j];
}
}
fprintf(g,"%.3lf",dist);
return 0;
}
fclose(f);
fclose(g);
return 0;
}