Go: package main

import . "fmt"

func main() {
	for i := 1; i < 10; i++ {
		for j := 1; j < 10; j++ {
			Printf("%dx%d=%d\n", i, j, i*j)
		}
	}
}

C++: #include <iostream>
using namespace std;

int main(void){
	for(int i=1;i<10;i++){
		for(int j=1;j<10;j++){
			cout<<i<<"x"<<j<<"="<<i*j<<endl;
		}
	}

	return 0;
}

C++: #include <iostream>
using namespace std;
int main()
{
	for(int i=1;i<=9;i++){
		for(int j=1;j<=9;j++){
			cout<<i<<"x"<<j<<"="<<i*j<<endl;;
		}
	}
	return 0;
}

C++: #include<bits/stdc++.h>
#include<cstdio>
#include<sstream>
#include<cstdlib>
#include<cctype>
#include<cmath>
#include<algorithm>
#include<set>
#include<queue>
#include<stack>
#include<list>
#include<iostream>
#include<fstream>
#include<numeric>
#include<string>
#include<vector>
#include<cstring>
#include<map>
#include<iterator>

using namespace std;
#define EPS 1e-9
#define MAX 505
#define pb push_back
#define mp make_pair
#define ins insert
#define fi first
#define se second
#define pi acos(-1.0)
#define mod 100000007
#define inf 2147483647
#define ll long long int
#define sss stringstream
#define oss ostringstream
#define iss istringstream
#define llu long long unsigned

#define _sq(a) (a)*(a)
#define sz(a) ((int)a.size())
#define gcd(a,b)    __gcd(a,b)
#define lcm(a,b) ((a)*((b)/gcd(a,b)))
#define _max3(a,b,c) max(a, max(b,c))
#define _min3(a,b,c) min(a, min(b,c))
#define FOR(i, n) for(i=0; i<(int)n; i++)
#define FOR1(i, n) for(i=1; i<=(int)n; i++)
#define mem(a) memset(a, 0, sizeof(a))
#define _set(a) memset(a,-1,sizeof(a))
#define FORI(i, a, b) for(i=a; i>=(int)b; i--)
#define FORab(i, a, b) for(i=a; i<=(int)b; i++)
#define popcount(n) __builtin_popcount(n)
#define popcountl(n) __builtin_popcountll(n)
#define sort_rev(a) sort(a.rbegin(), a.rend())
#define sort_all(a) sort(a.begin(), a.end())
#define dis_twopoints(x1,y1,x2,y2) sqrt(_sq(x1-x2) + _sq(y1-y2))
#define foreach(i,n) for(__typeof((n).begin())i =(n).begin();i!=(n).end();i++)

//If Long Long (mask & (1LL << k))
#define check(mask, k) (mask & (1 << k))
#define set1(mask, k) (mask | (1 << k))
#define set0(mask ,k) (mask & (~(1<<k)))

#define SD(a) scanf("%d",&a)
#define SLF(a) scanf("%lf",&a)
#define SC(a) scanf("%c",&a)
#define SS(a) scanf("%s",a)
#define SLLD(a) scanf("%lld", &a)
#define Si64(a) scanf("%I64d", &a)

#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)

int main()
{
     int i,j;
     for(i=1;i<=9;i++)
     {
         for(j=1;j<=9;j++)
         {
             cout<<i<<"*"<<j<<"="<<i*j<<endl;
         }
     }
    return 0;
}

C++: #include<iostream>
using namespace std;

int main()
{
	int a=0,b=0;
	for(int i=0;i<9;i++)
	{
		a++;
		b=0;
		for(int j=0;j<9;j++){
			b++;
			cout<<a<<"x"<<b<<"="<<a*b<<endl;
		}
	}
}

C++: // Undone
#include <bits/stdc++.h>
#define int long long
#define double long double
#define INF 1e18
using namespace std;
signed main() {
  for (int i = 1; i < 10; i++) {
    for (int j = 1; j < 10; j++) {
      cout << i << "x" << j << "=" << i*j << endl;
    }
  }    
}

C++: #include<iostream>
using namespace std;
int main()
{
    int i,j;
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=9;j++)
        {
            cout<<i<<"x"<<j<<"="<<i*j<<endl;
        }
    }
    return 0;
}

C++: #include<iostream>

using namespace std;
int main()
{
	for(int i(1);i<10;i++)
	{
		for(int j(1);j<10;j++)
		{
			int prod=i*j;
			cout<<i<<'*'<<j<<'='<<prod<<endl;
		}
	}
	cout<<endl;
	return 0;	
}

C++: #include<iostream>
using namespace std;
int main(){
    
    for(int i=1;i<10;i++){
      for(int j=1; j<10;j++){
          cout<<i<<"x"<<j<<"="<<i*j<<endl;
          
     }
    }  
 
  return 0;
}

C++: #include<iostream>

int main(){
  for(int i=1; i<=9; i++){
    for(int j=1; j<=9; j++){
      std::cout << i << "x" << j << "=" << i*j <<'\n';
    }
  }
  return 0;
}

C++: #include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
const int MAXN = 1000;
struct Point
{
	double x, y;
	Point (){}
	Point (double _x, double _y)
	{
		x = _x;
		y = _y;
	}
	void read()
	{
		scanf("%lf%lf", &x, &y);
	}
	Point operator - (const Point &a)
	{
		return Point(x - a.x, y - a.y);
	}
	double operator % (const Point &a)
	{
		return x * a.x + y * a.y;
	}
	double mol()
	{
		return sqrt((double)((*this) % (*this)));
	}
	double disto(const Point &a)
	{
		return (*this - a).mol();
	}
}point[1000];
struct Edge
{
	int u, v; 
	double len;
	bool flag;
	Edge(){}
	Edge(int _u, int _v, double _len)
	{
		u = _u;
		v = _v;
		len = _len;
		flag = 0;
	}
	bool operator < (const Edge &a) const
	{
		return len < a.len;
	}
};
int fa[MAXN];
int find(int x)
{
	if (fa[x] == x)
		return x;
	else
		return fa[x] = find(fa[x]);
}
int head[MAXN], L;
struct Ed
{
	int to, next; 
	double len, maxs;
}ed[MAXN * 2 - 2];
void init(int n)
{
	memset(head, -1, 4 * n);
	L = 0;
}
void add_edge(int u, int v, double len)
{
	ed[L].to = v;
	ed[L].len = len;
	ed[L].maxs = -1;
	ed[L].next = head[u];
	head[u] = L ++;
}
int deg[MAXN], pre[MAXN];
void dfs(int u, int fu)
{
	for (int i = head[u]; i != -1; i = ed[i].next)
	{
		int v = ed[i].to;
		if (v == fu)
			continue;
		deg[v] = deg[u] + 1;
		pre[v] = i;
		dfs(v, u);
	}
}
int LCA[MAXN][MAXN];
void bfs(int s)
{
	queue <pair <int, int> > que;
	que.push(make_pair(s, -1));
	LCA[s][s] = s;
	while (!que.empty())
	{
		int u = que.front().first, fu = que.front().second;
		que.pop();
		for (int i = head[u]; i != -1; i = ed[i].next)
		{
			int v = ed[i].to;
			if (v == fu)
				continue;
			LCA[s][v] = LCA[s][u];
			if (deg[v] < deg[u])
				LCA[s][v] = v;
			else
				LCA[s][v] = LCA[s][u];
		}
	}
}
int next[MAXN];
int getNext(int u)
{
	if (u == next[u])
		return u;
	else
		return next[u] = getNext(next[u]);
}
void cover(int u, int fu, double len)
{
	for (u = getNext(u); deg[u] > deg[fu]; u = getNext(u))
	{
		ed[pre[u]].maxs = ed[pre[u] ^ 1].maxs = len;
		next[u] = ed[pre[u] ^ 1].to;
	}
}
int main()
{
	int T;
	scanf("%d", &T);
	while (T --)
	{
		int n, m;
		scanf("%d%d", &n, &m);
		for (int i = 0; i < n; ++ i)
			point[i].read();
		vector <Edge> edge;
		for (int i = 0; i < n; ++ i)
			for (int j = 0; j < i; ++ j)
				edge.push_back(Edge(j, i, point[i].disto(point[j])));
		sort(edge.begin(), edge.end());
		for (int i = 0; i < n; ++ i)
			next[i] = fa[i] = i;
		double ans = 0;
		init(n);
		for (int i = 0; i < (int) edge.size(); ++ i)
			if (find(edge[i].u) != find(edge[i].v))
			{
				edge[i].flag = 1;
				fa[find(edge[i].u)] = find(edge[i].v);
				ans += edge[i].len;
				add_edge(edge[i].u, edge[i].v, edge[i].len);
				add_edge(edge[i].v, edge[i].u, edge[i].len);
			}
		deg[0] = 0;
		dfs(0, -1);
		for (int i = 0; i < n; ++ i)
			bfs(i);
		for (int i = 0; i < (int) edge.size(); ++ i)
			if (!edge[i].flag && edge[i].u)
			{
				int lca = LCA[edge[i].u][edge[i].v];
				cover(edge[i].u, lca, edge[i].len);
				cover(edge[i].v, lca, edge[i].len);
			}
		double maxs = 0;
		for (int i = 0; i < L; i += 2)
			maxs = max(maxs, ed[i].maxs - ed[i].len);
		printf("%.2f\n", (ans + maxs) * m);
	}
	return 0;
}

C++: #include <iostream>
using namespace std;

int main() {
  int a = 1;
  int b = 1;
  for (;a < 10 && b <= 9;) {
    cout << b << "x" << a << "=" << a*b << endl;
    ++a;
    if (a == 10 && b <= 8) {
    ++b;
    a = 1;
    }
  }
}

C++: #include<stdio.h>

int main()
{
	for(int i = 1; i <= 9; i++)
	{
		for(int j = 1; j <=9; j++)
		{
			printf("%dx%d=%d\n", i, j, i * j);
		}
	}
	return 0;
}

C++: #include <cstdio>
using namespace std;
int main(){
  for(int i=1;i<10;i++){
  for(int j=1;j<10;j++){
    printf("%dx%d=%d\n",i,j,i*j);
  }}
  return 0;
}

C++: #include<iostream>
using namespace std;

int main(){
	for(int a = 1; a <= 9; ++a) {
		for(int b = 1; b <= 9; ++b) {
			cout << a << "x" << b << "=" << a*b << endl;
		}
	}
	return 0;
}

C++: #include<bits/stdc++.h>
int n;
int main()
{
    printf("1x1=1\n1x2=2\n.\n.\n9x8=72\n9x9=81\n");
    return 0;
}