時間制限 : sec, メモリ制限 : KB
Japanese

Kは多角形のケイ

1 番じゃなきゃダメですか?K 番じゃダメなんでしょうか?」

これがケイ氏の座右の銘である.最近ケイ氏はもっぱら多角形に興味があるようで,目の前に広がる広大な二次元平面上に置かれた N 個の点を見て,そこから多角形を形成する方法について思いを馳せている.ケイ氏はどうやら,この N 個の点のうちいくつかの点を選んで自由な順番で繋げることで,選んだ点を頂点とする多角形を構成することにしたようだ.ただし,多角形は以下の条件を満たす必要がある.

  • 単純多角形である.すなわち,3 つ以上の頂点を持ち,連続しない任意の 2 辺が交点を持たない.
  • 選ばれた点以外も含む N 個すべての点をその内部,または周上に含む.

ケイ氏は己の信念に従って,このような多角形のうち,周長,すなわち全ての辺の長さの和が K 番目に短い多角形を渇望している.

あなたの仕事は,ケイ氏を手伝うため,条件を満たす多角形のうち,周長の昇順に並べたときに K 番目となる多角形を求め,その周長を出力するプログラムを書くことだ.ただし,そのような多角形が K 個以上存在しないこともある.そのようなときにはケイ氏の無念の気持ちを慮りつつ,申し訳ない気持ちを込めながら -1 と出力する必要がある.

Input

入力は複数のデータセットからなる. 各データセットは次の形式で表される.

N K
x1 y1
...
xN yN

データセットの1行目には二次元平面上の点の数 N と求める周長の順位 K が与えられる. N, K はともに整数であり,3 ≤ N ≤ 25, 1 ≤ K ≤ 10 が成り立つ.続く N 行では各点の二次元平面上の座標が与えられる.N 行のうち i 行目には i 番目の点の x 座標 xiy 座標 yi がともに整数で与えられ,すべての 1 ≤ i ≤ N について -100 ≤ xi, yi ≤ 100 が成り立つ.どの相異なる 3 点を選んでも,その 3 点すべてを通るような直線は存在しないと仮定してよい.また,入力において,周長の昇順に並べたときに K 番目となる,問題文中に述べた条件を満たす多角形は,存在するならば一意に定まると仮定してよい.

入力の終わりは,2 個のゼロだけからなる行で表される. 全データセットの総数は 50 を超えない.

Output

与えられた点集合からいくつかの点を選び単純多角形を作るとき,構成可能な単純多角形のうち K 番目に周長が短い多角形の周長を 1 行に出力せよ.そのような多角形が存在しない場合は -1 を出力せよ.結果は 10-4 以上の誤差を含んではいけない.

Sample Input

5 2
1 1
1 4
2 2
3 1
3 5
3 1
0 2
1 0
-1 0
3 2
0 2
1 0
-1 0
9 10
8 1
9 19
2 10
1 1
4 17
7 13
3 4
6 13
9 21
0 0

Output for the Sample Input

11.812559200041266
6.472135954999580
-1
52.202878812480016