#include <iostream>
#include<bits/stdc++.h>
#define F first
#define S second
using namespace std;
typedef pair<int,int> P;
int n,m,r,s[2000][3],ans,ch[2000],t[3],L,A;
vector<P> v[2000];
void dfs(int a,int cnt,int tot){
    if(cnt==m){
        if(m!=2){
        	for(P y:v[a]){
            	if(y.F==A)tot+=y.S;
        	}
    }
        ans=max(ans,tot);
        return ;
    }
    for(P x:v[a]){
        if(ch[x.F]==0){
            ch[x.F]=1;
            dfs(x.F,cnt+1,tot+x.S);
            ch[x.F]=0;
        }
    }
    return ;
}
int main(void){
    while(1){
    cin>>n>>m>>r;
    if(n==0&&m==0&&r==0)return 0;
    for(int i=0;i<n;i++)v[i]={};
    for(int i=0;i<n;i++){
        for(int j=0;j<3;j++){
            cin>>s[i][j];
        }
    }
    for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            for(int k=0;k<3;k++){
                t[k]=r-abs(s[i][k]-s[j][k]);
            }
            if(t[0]<0||t[1]<0||t[2]<0)continue;
            L=t[0]*t[1]*2+t[1]*t[2]*2+t[2]*t[0]*2;
            v[i].push_back({j,L});
            v[j].push_back({i,L});
        }
    }
    ans=-1;
    for(int i=0;i<n;i++){
        A=i;
        ch[i]=1;
        dfs(i,1,0);
        ch[i]=0;
    }
    if(ans==-1)cout<<-1<<endl;
    else cout<<r*r*6*m-ans<<endl;
    }
}

