機器學習-集成學習(AdaBoosting算法)

一,介紹

AdaBoosting算法是Boosting算法中最常用的一種,其思想是:先從初始訓練集訓練一個基學習器,在根據基學習器的表現對訓練樣本進行調整,使得錯誤的訓練樣本在後續受到更多關注,然後調整樣本分佈訓練下一個基學習器;如此重複直到學習器數目達到指定值T,最終將T個學習器進行加權結合。

二,算法推導

假設對訓練數據進行二分類,訓練集爲N個多維的特徵向量,學習器的數目爲T個。則T個分類器的線性組合爲:

                                                                                    

其中,爲第t個弱分類器的權值,且大於0,爲第t個分類器對與xi的分類結果。

根據上述公式,我們可以知道xi在T個數目的學習器中的判斷結果爲:

                                                                                           

sign爲符號函數如下:

                                                    

現假設已有m-1個分類器在級聯訓練器中:

                                                         

我們在新增一個學習器加入級聯訓練器:

                                                           

爲了選擇到更好的學習器,我們引入指數損失函數:

                                              

將上式拆分,由於前m-1個分類器和相應的權值都已確定,令。正確分類時:同爲+1或者-1,錯誤分類時:則爲兩個爲異號。我們將其代入上式:

                                       

由於是一個大於0的數,可知,必然大於,從而有錯誤分類收到更多關注。我們令其導數爲0求最小化值:

                                   

我們令Wc爲正確分類的權值之和,We爲錯誤分類的權值之和,Wc+We=W,再令em=We/W,即錯誤分類的概率,最終獲得:

                                                      

三,算法流程

(1)設置初始權重。訓練數據中的每個樣本,賦予其權重,即樣本權重,用向量D表示,這些權重都初始化成相等值。假設有n個樣本的訓練集:

                                                

設定每個樣本的權重都是相等的,即1/n。

(2)計算錯誤率。用第一個弱學習算法h1對其進行學習,學習完成後進行錯誤率ε的統計:

                                                      

(3)計算弱學習器權重。弱學習算法也有一個權重,用向量α表示,利用錯誤率計算權重α:

                                                                       

(4)更新樣本權重。在第一次學習完成後,需要重新調整樣本的權重,以使得在第一分類中被錯分的樣本的權重,在接下來的學習中可以重點對其進行學習:

                                              

四,代碼實現

訓練數據:

2.000000    1.000000   38.500000  66.000000  28.000000  3.000000   3.000000   0.000000   2.000000   5.000000   4.000000   4.000000   0.000000   0.000000   0.000000   3.000000   5.000000   45.000000  8.400000   0.000000   0.000000   -1.000000
1.000000   1.000000   39.200000  88.000000  20.000000  0.000000   0.000000   4.000000   1.000000   3.000000   4.000000   2.000000   0.000000   0.000000   0.000000   4.000000   2.000000   50.000000  85.000000  2.000000   2.000000   -1.000000
2.000000   1.000000   38.300000  40.000000  24.000000  1.000000   1.000000   3.000000   1.000000   3.000000   3.000000   1.000000   0.000000   0.000000   0.000000   1.000000   1.000000   33.000000  6.700000   0.000000   0.000000   1.000000
1.000000   9.000000   39.100000  164.000000 84.000000  4.000000   1.000000   6.000000   2.000000   2.000000   4.000000   4.000000   1.000000   2.000000   5.000000   3.000000   0.000000   48.000000  7.200000   3.000000   5.300000   -1.000000
2.000000   1.000000   37.300000  104.000000 35.000000  0.000000   0.000000   6.000000   2.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   74.000000  7.400000   0.000000   0.000000   -1.000000
2.000000   1.000000   0.000000   0.000000   0.000000   2.000000   1.000000   3.000000   1.000000   2.000000   3.000000   2.000000   2.000000   1.000000   0.000000   3.000000   3.000000   0.000000   0.000000   0.000000   0.000000   1.000000
1.000000   1.000000   37.900000  48.000000  16.000000  1.000000   1.000000   1.000000   1.000000   3.000000   3.000000   3.000000   1.000000   1.000000   0.000000   3.000000   5.000000   37.000000  7.000000   0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   60.000000  0.000000   3.000000   0.000000   0.000000   1.000000   0.000000   4.000000   2.000000   2.000000   1.000000   0.000000   3.000000   4.000000   44.000000  8.300000   0.000000   0.000000   -1.000000
2.000000   1.000000   0.000000   80.000000  36.000000  3.000000   4.000000   3.000000   1.000000   4.000000   4.000000   4.000000   2.000000   1.000000   0.000000   3.000000   5.000000   38.000000  6.200000   0.000000   0.000000   -1.000000
2.000000   9.000000   38.300000  90.000000  0.000000   1.000000   0.000000   1.000000   1.000000   5.000000   3.000000   1.000000   2.000000   1.000000   0.000000   3.000000   0.000000   40.000000  6.200000   1.000000   2.200000   1.000000
1.000000   1.000000   38.100000  66.000000  12.000000  3.000000   3.000000   5.000000   1.000000   3.000000   3.000000   1.000000   2.000000   1.000000   3.000000   2.000000   5.000000   44.000000  6.000000   2.000000   3.600000   1.000000
2.000000   1.000000   39.100000  72.000000  52.000000  2.000000   0.000000   2.000000   1.000000   2.000000   1.000000   2.000000   1.000000   1.000000   0.000000   4.000000   4.000000   50.000000  7.800000   0.000000   0.000000   1.000000
1.000000   1.000000   37.200000  42.000000  12.000000  2.000000   1.000000   1.000000   1.000000   3.000000   3.000000   3.000000   3.000000   1.000000   0.000000   4.000000   5.000000   0.000000   7.000000   0.000000   0.000000   1.000000
2.000000   9.000000   38.000000  92.000000  28.000000  1.000000   1.000000   2.000000   1.000000   1.000000   3.000000   2.000000   3.000000   0.000000   7.200000   1.000000   1.000000   37.000000  6.100000   1.000000   0.000000   -1.000000
1.000000   1.000000   38.200000  76.000000  28.000000  3.000000   1.000000   1.000000   1.000000   3.000000   4.000000   1.000000   2.000000   2.000000   0.000000   4.000000   4.000000   46.000000  81.000000  1.000000   2.000000   1.000000
1.000000   1.000000   37.600000  96.000000  48.000000  3.000000   1.000000   4.000000   1.000000   5.000000   3.000000   3.000000   2.000000   3.000000   4.500000   4.000000   0.000000   45.000000  6.800000   0.000000   0.000000   -1.000000
1.000000   9.000000   0.000000   128.000000 36.000000  3.000000   3.000000   4.000000   2.000000   4.000000   4.000000   3.000000   3.000000   0.000000   0.000000   4.000000   5.000000   53.000000  7.800000   3.000000   4.700000   -1.000000
2.000000   1.000000   37.500000  48.000000  24.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   1.000000
1.000000   1.000000   37.600000  64.000000  21.000000  1.000000   1.000000   2.000000   1.000000   2.000000   3.000000   1.000000   1.000000   1.000000   0.000000   2.000000   5.000000   40.000000  7.000000   1.000000   0.000000   1.000000
2.000000   1.000000   39.400000  110.000000 35.000000  4.000000   3.000000   6.000000   0.000000   0.000000   3.000000   3.000000   0.000000   0.000000   0.000000   0.000000   0.000000   55.000000  8.700000   0.000000   0.000000   1.000000
1.000000   1.000000   39.900000  72.000000  60.000000  1.000000   1.000000   5.000000   2.000000   5.000000   4.000000   4.000000   3.000000   1.000000   0.000000   4.000000   4.000000   46.000000  6.100000   2.000000   0.000000   1.000000
2.000000   1.000000   38.400000  48.000000  16.000000  1.000000   0.000000   1.000000   1.000000   1.000000   3.000000   1.000000   2.000000   3.000000   5.500000   4.000000   3.000000   49.000000  6.800000   0.000000   0.000000   1.000000
1.000000   1.000000   38.600000  42.000000  34.000000  2.000000   1.000000   4.000000   0.000000   2.000000   3.000000   1.000000   0.000000   0.000000   0.000000   1.000000   0.000000   48.000000  7.200000   0.000000   0.000000   1.000000
1.000000   9.000000   38.300000  130.000000 60.000000  0.000000   3.000000   0.000000   1.000000   2.000000   4.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   50.000000  70.000000  0.000000   0.000000   1.000000
1.000000   1.000000   38.100000  60.000000  12.000000  3.000000   3.000000   3.000000   1.000000   0.000000   4.000000   3.000000   3.000000   2.000000   2.000000   0.000000   0.000000   51.000000  65.000000  0.000000   0.000000   1.000000
2.000000   1.000000   37.800000  60.000000  42.000000  0.000000   0.000000   0.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   1.000000
1.000000   1.000000   38.300000  72.000000  30.000000  4.000000   3.000000   3.000000   2.000000   3.000000   3.000000   3.000000   2.000000   1.000000   0.000000   3.000000   5.000000   43.000000  7.000000   2.000000   3.900000   1.000000
1.000000   1.000000   37.800000  48.000000  12.000000  3.000000   1.000000   1.000000   1.000000   0.000000   3.000000   2.000000   1.000000   1.000000   0.000000   1.000000   3.000000   37.000000  5.500000   2.000000   1.300000   1.000000
1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
2.000000   1.000000   37.700000  48.000000  0.000000   2.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   0.000000   0.000000   0.000000   45.000000  76.000000  0.000000   0.000000   1.000000
2.000000   1.000000   37.700000  96.000000  30.000000  3.000000   3.000000   4.000000   2.000000   5.000000   4.000000   4.000000   3.000000   2.000000   4.000000   4.000000   5.000000   66.000000  7.500000   0.000000   0.000000   -1.000000
2.000000   1.000000   37.200000  108.000000 12.000000  3.000000   3.000000   4.000000   2.000000   2.000000   4.000000   2.000000   0.000000   3.000000   6.000000   3.000000   3.000000   52.000000  8.200000   3.000000   7.400000   -1.000000
1.000000   1.000000   37.200000  60.000000  0.000000   2.000000   1.000000   1.000000   1.000000   3.000000   3.000000   3.000000   2.000000   1.000000   0.000000   4.000000   5.000000   43.000000  6.600000   0.000000   0.000000   1.000000
1.000000   1.000000   38.200000  64.000000  28.000000  1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   0.000000   0.000000   0.000000   0.000000   4.000000   4.000000   49.000000  8.600000   2.000000   6.600000   1.000000
1.000000   1.000000   0.000000   100.000000 30.000000  3.000000   3.000000   4.000000   2.000000   5.000000   4.000000   4.000000   3.000000   3.000000   0.000000   4.000000   4.000000   52.000000  6.600000   0.000000   0.000000   1.000000
2.000000   1.000000   0.000000   104.000000 24.000000  4.000000   3.000000   3.000000   2.000000   4.000000   4.000000   3.000000   0.000000   3.000000   0.000000   0.000000   2.000000   73.000000  8.400000   0.000000   0.000000   -1.000000
2.000000   1.000000   38.300000  112.000000 16.000000  0.000000   3.000000   5.000000   2.000000   0.000000   0.000000   1.000000   1.000000   2.000000   0.000000   0.000000   5.000000   51.000000  6.000000   2.000000   1.000000   -1.000000
1.000000   1.000000   37.800000  72.000000  0.000000   0.000000   3.000000   0.000000   1.000000   5.000000   3.000000   1.000000   0.000000   1.000000   0.000000   1.000000   1.000000   56.000000  80.000000  1.000000   2.000000   1.000000
2.000000   1.000000   38.600000  52.000000  0.000000   1.000000   1.000000   1.000000   1.000000   3.000000   3.000000   2.000000   1.000000   1.000000   0.000000   1.000000   3.000000   32.000000  6.600000   1.000000   5.000000   1.000000
1.000000   9.000000   39.200000  146.000000 96.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
1.000000   1.000000   0.000000   88.000000  0.000000   3.000000   3.000000   6.000000   2.000000   5.000000   3.000000   3.000000   1.000000   3.000000   0.000000   4.000000   5.000000   63.000000  6.500000   3.000000   0.000000   -1.000000
2.000000   9.000000   39.000000  150.000000 72.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   47.000000  8.500000   0.000000   0.100000   1.000000
2.000000   1.000000   38.000000  60.000000  12.000000  3.000000   1.000000   3.000000   1.000000   3.000000   3.000000   1.000000   1.000000   1.000000   0.000000   2.000000   2.000000   47.000000  7.000000   0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   120.000000 0.000000   3.000000   4.000000   4.000000   1.000000   4.000000   4.000000   4.000000   1.000000   1.000000   0.000000   0.000000   5.000000   52.000000  67.000000  2.000000   2.000000   -1.000000
1.000000   1.000000   35.400000  140.000000 24.000000  3.000000   3.000000   4.000000   2.000000   4.000000   4.000000   0.000000   2.000000   1.000000   0.000000   0.000000   5.000000   57.000000  69.000000  3.000000   2.000000   -1.000000
2.000000   1.000000   0.000000   120.000000 0.000000   4.000000   3.000000   4.000000   2.000000   5.000000   4.000000   4.000000   1.000000   1.000000   0.000000   4.000000   5.000000   60.000000  6.500000   3.000000   0.000000   -1.000000
1.000000   1.000000   37.900000  60.000000  15.000000  3.000000   0.000000   4.000000   2.000000   5.000000   4.000000   4.000000   2.000000   2.000000   0.000000   4.000000   5.000000   65.000000  7.500000   0.000000   0.000000   1.000000
2.000000   1.000000   37.500000  48.000000  16.000000  1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   0.000000   1.000000   0.000000   37.000000  6.500000   0.000000   0.000000   1.000000
1.000000   1.000000   38.900000  80.000000  44.000000  3.000000   3.000000   3.000000   2.000000   2.000000   3.000000   3.000000   2.000000   2.000000   7.000000   3.000000   1.000000   54.000000  6.500000   3.000000   0.000000   -1.000000
2.000000   1.000000   37.200000  84.000000  48.000000  3.000000   3.000000   5.000000   2.000000   4.000000   1.000000   2.000000   1.000000   2.000000   0.000000   2.000000   1.000000   73.000000  5.500000   2.000000   4.100000   -1.000000
2.000000   1.000000   38.600000  46.000000  0.000000   1.000000   1.000000   2.000000   1.000000   1.000000   3.000000   2.000000   1.000000   1.000000   0.000000   0.000000   2.000000   49.000000  9.100000   1.000000   1.600000   1.000000
1.000000   1.000000   37.400000  84.000000  36.000000  1.000000   0.000000   3.000000   2.000000   3.000000   3.000000   2.000000   0.000000   0.000000   0.000000   4.000000   5.000000   0.000000   0.000000   3.000000   0.000000   -1.000000
2.000000   1.000000   0.000000   0.000000   0.000000   1.000000   1.000000   3.000000   1.000000   1.000000   3.000000   1.000000   0.000000   0.000000   0.000000   2.000000   2.000000   43.000000  7.700000   0.000000   0.000000   1.000000
2.000000   1.000000   38.600000  40.000000  20.000000  0.000000   0.000000   0.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   41.000000  6.400000   0.000000   0.000000   1.000000
2.000000   1.000000   40.300000  114.000000 36.000000  3.000000   3.000000   1.000000   2.000000   2.000000   3.000000   3.000000   2.000000   1.000000   7.000000   1.000000   5.000000   57.000000  8.100000   3.000000   4.500000   -1.000000
1.000000   9.000000   38.600000  160.000000 20.000000  3.000000   0.000000   5.000000   1.000000   3.000000   3.000000   4.000000   3.000000   0.000000   0.000000   4.000000   0.000000   38.000000  0.000000   2.000000   0.000000   -1.000000
1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   24.000000  6.700000   0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   64.000000  36.000000  2.000000   0.000000   2.000000   1.000000   5.000000   3.000000   3.000000   2.000000   2.000000   0.000000   0.000000   0.000000   42.000000  7.700000   0.000000   0.000000   -1.000000
1.000000   1.000000   0.000000   0.000000   20.000000  4.000000   3.000000   3.000000   0.000000   5.000000   4.000000   3.000000   2.000000   0.000000   0.000000   4.000000   4.000000   53.000000  5.900000   3.000000   0.000000   -1.000000
2.000000   1.000000   0.000000   96.000000  0.000000   3.000000   3.000000   3.000000   2.000000   5.000000   4.000000   4.000000   1.000000   2.000000   0.000000   4.000000   5.000000   60.000000  0.000000   0.000000   0.000000   -1.000000
2.000000   1.000000   37.800000  48.000000  32.000000  1.000000   1.000000   3.000000   1.000000   2.000000   1.000000   0.000000   1.000000   1.000000   0.000000   4.000000   5.000000   37.000000  6.700000   0.000000   0.000000   1.000000
2.000000   1.000000   38.500000  60.000000  0.000000   2.000000   2.000000   1.000000   1.000000   1.000000   2.000000   2.000000   2.000000   1.000000   0.000000   1.000000   1.000000   44.000000  7.700000   0.000000   0.000000   1.000000
1.000000   1.000000   37.800000  88.000000  22.000000  2.000000   1.000000   2.000000   1.000000   3.000000   0.000000   0.000000   2.000000   0.000000   0.000000   4.000000   0.000000   64.000000  8.000000   1.000000   6.000000   -1.000000
2.000000   1.000000   38.200000  130.000000 16.000000  4.000000   3.000000   4.000000   2.000000   2.000000   4.000000   4.000000   1.000000   1.000000   0.000000   0.000000   0.000000   65.000000  82.000000  2.000000   2.000000   -1.000000
1.000000   1.000000   39.000000  64.000000  36.000000  3.000000   1.000000   4.000000   2.000000   3.000000   3.000000   2.000000   1.000000   2.000000   7.000000   4.000000   5.000000   44.000000  7.500000   3.000000   5.000000   1.000000
1.000000   1.000000   0.000000   60.000000  36.000000  3.000000   1.000000   3.000000   1.000000   3.000000   3.000000   2.000000   1.000000   1.000000   0.000000   3.000000   4.000000   26.000000  72.000000  2.000000   1.000000   1.000000
2.000000   1.000000   37.900000  72.000000  0.000000   1.000000   1.000000   5.000000   2.000000   3.000000   3.000000   1.000000   1.000000   3.000000   2.000000   3.000000   4.000000   58.000000  74.000000  1.000000   2.000000   1.000000
2.000000   1.000000   38.400000  54.000000  24.000000  1.000000   1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   2.000000   1.000000   0.000000   3.000000   2.000000   49.000000  7.200000   1.000000   0.000000   1.000000
2.000000   1.000000   0.000000   52.000000  16.000000  1.000000   0.000000   3.000000   1.000000   0.000000   0.000000   0.000000   2.000000   3.000000   5.500000   0.000000   0.000000   55.000000  7.200000   0.000000   0.000000   1.000000
2.000000   1.000000   38.000000  48.000000  12.000000  1.000000   1.000000   1.000000   1.000000   1.000000   3.000000   0.000000   1.000000   1.000000   0.000000   3.000000   2.000000   42.000000  6.300000   2.000000   4.100000   1.000000
2.000000   1.000000   37.000000  60.000000  20.000000  3.000000   0.000000   0.000000   1.000000   3.000000   0.000000   3.000000   2.000000   2.000000   4.500000   4.000000   4.000000   43.000000  7.600000   0.000000   0.000000   -1.000000
1.000000   1.000000   37.800000  48.000000  28.000000  1.000000   1.000000   1.000000   1.000000   1.000000   2.000000   1.000000   2.000000   0.000000   0.000000   1.000000   1.000000   46.000000  5.900000   2.000000   7.000000   1.000000
1.000000   1.000000   37.700000  56.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.100000  52.000000  24.000000  1.000000   1.000000   5.000000   1.000000   4.000000   3.000000   1.000000   2.000000   3.000000   7.000000   1.000000   0.000000   54.000000  7.500000   2.000000   2.600000   -1.000000
1.000000   9.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   37.000000  4.900000   0.000000   0.000000   -1.000000
1.000000   9.000000   39.700000  100.000000 0.000000   3.000000   3.000000   5.000000   2.000000   2.000000   3.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   48.000000  57.000000  2.000000   2.000000   -1.000000
1.000000   1.000000   37.600000  38.000000  20.000000  3.000000   3.000000   1.000000   1.000000   3.000000   3.000000   2.000000   0.000000   0.000000   0.000000   3.000000   0.000000   37.000000  68.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.700000  52.000000  20.000000  2.000000   0.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   0.000000   1.000000   1.000000   33.000000  77.000000  0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   0.000000   0.000000   3.000000   3.000000   3.000000   3.000000   5.000000   3.000000   3.000000   3.000000   2.000000   0.000000   4.000000   5.000000   46.000000  5.900000   0.000000   0.000000   -1.000000
1.000000   1.000000   37.500000  96.000000  18.000000  1.000000   3.000000   6.000000   2.000000   3.000000   4.000000   2.000000   2.000000   3.000000   5.000000   0.000000   4.000000   69.000000  8.900000   3.000000   0.000000   1.000000
1.000000   1.000000   36.400000  98.000000  35.000000  3.000000   3.000000   4.000000   1.000000   4.000000   3.000000   2.000000   0.000000   0.000000   0.000000   4.000000   4.000000   47.000000  6.400000   3.000000   3.600000   -1.000000
1.000000   1.000000   37.300000  40.000000  0.000000   0.000000   3.000000   1.000000   1.000000   2.000000   3.000000   2.000000   3.000000   1.000000   0.000000   3.000000   5.000000   36.000000  0.000000   3.000000   2.000000   1.000000
1.000000   9.000000   38.100000  100.000000 80.000000  3.000000   1.000000   2.000000   1.000000   3.000000   4.000000   1.000000   0.000000   0.000000   0.000000   1.000000   0.000000   36.000000  5.700000   0.000000   0.000000   1.000000
1.000000   1.000000   38.000000  0.000000   24.000000  3.000000   3.000000   6.000000   2.000000   5.000000   0.000000   4.000000   1.000000   1.000000   0.000000   0.000000   0.000000   68.000000  7.800000   0.000000   0.000000   -1.000000
1.000000   1.000000   37.800000  60.000000  80.000000  1.000000   3.000000   2.000000   2.000000   2.000000   3.000000   3.000000   0.000000   2.000000   5.500000   4.000000   0.000000   40.000000  4.500000   2.000000   0.000000   1.000000
2.000000   1.000000   38.000000  54.000000  30.000000  2.000000   3.000000   3.000000   3.000000   3.000000   1.000000   2.000000   2.000000   2.000000   0.000000   0.000000   4.000000   45.000000  6.200000   0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   88.000000  40.000000  3.000000   3.000000   4.000000   2.000000   5.000000   4.000000   3.000000   3.000000   0.000000   0.000000   4.000000   5.000000   50.000000  7.700000   3.000000   1.400000   -1.000000
2.000000   1.000000   0.000000   40.000000  16.000000  0.000000   0.000000   0.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   50.000000  7.000000   2.000000   3.900000   -1.000000
2.000000   1.000000   39.000000  64.000000  40.000000  1.000000   1.000000   5.000000   1.000000   3.000000   3.000000   2.000000   2.000000   1.000000   0.000000   3.000000   3.000000   42.000000  7.500000   2.000000   2.300000   1.000000
2.000000   1.000000   38.300000  42.000000  10.000000  1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   38.000000  61.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.000000  52.000000  16.000000  0.000000   0.000000   0.000000   0.000000   2.000000   0.000000   0.000000   0.000000   3.000000   1.000000   1.000000   1.000000   53.000000  86.000000  0.000000   0.000000   1.000000
2.000000   1.000000   40.300000  114.000000 36.000000  3.000000   3.000000   1.000000   2.000000   2.000000   3.000000   3.000000   2.000000   1.000000   7.000000   1.000000   5.000000   57.000000  8.100000   3.000000   4.500000   -1.000000
2.000000   1.000000   38.800000  50.000000  20.000000  3.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   2.000000   1.000000   0.000000   3.000000   1.000000   42.000000  6.200000   0.000000   0.000000   1.000000
2.000000   1.000000   0.000000   0.000000   0.000000   3.000000   3.000000   1.000000   1.000000   5.000000   3.000000   3.000000   1.000000   1.000000   0.000000   4.000000   5.000000   38.000000  6.500000   0.000000   0.000000   -1.000000
2.000000   1.000000   37.500000  48.000000  30.000000  4.000000   1.000000   3.000000   1.000000   0.000000   2.000000   1.000000   1.000000   1.000000   0.000000   1.000000   1.000000   48.000000  8.600000   0.000000   0.000000   1.000000
1.000000   1.000000   37.300000  48.000000  20.000000  0.000000   1.000000   2.000000   1.000000   3.000000   3.000000   3.000000   2.000000   1.000000   0.000000   3.000000   5.000000   41.000000  69.000000  0.000000   0.000000   1.000000
2.000000   1.000000   0.000000   84.000000  36.000000  0.000000   0.000000   3.000000   1.000000   0.000000   3.000000   1.000000   2.000000   1.000000   0.000000   3.000000   2.000000   44.000000  8.500000   0.000000   0.000000   1.000000
1.000000   1.000000   38.100000  88.000000  32.000000  3.000000   3.000000   4.000000   1.000000   2.000000   3.000000   3.000000   0.000000   3.000000   1.000000   4.000000   5.000000   55.000000  60.000000  0.000000   0.000000   -1.000000
2.000000   1.000000   37.700000  44.000000  40.000000  2.000000   1.000000   3.000000   1.000000   1.000000   3.000000   2.000000   1.000000   1.000000   0.000000   1.000000   5.000000   41.000000  60.000000  0.000000   0.000000   1.000000
2.000000   1.000000   39.600000  108.000000 51.000000  3.000000   3.000000   6.000000   2.000000   2.000000   4.000000   3.000000   1.000000   2.000000   0.000000   3.000000   5.000000   59.000000  8.000000   2.000000   2.600000   1.000000
1.000000   1.000000   38.200000  40.000000  16.000000  3.000000   3.000000   1.000000   1.000000   1.000000   3.000000   0.000000   0.000000   0.000000   0.000000   1.000000   1.000000   34.000000  66.000000  0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   60.000000  20.000000  4.000000   3.000000   4.000000   2.000000   5.000000   4.000000   0.000000   0.000000   1.000000   0.000000   4.000000   5.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
2.000000   1.000000   38.300000  40.000000  16.000000  3.000000   0.000000   1.000000   1.000000   2.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   37.000000  57.000000  0.000000   0.000000   1.000000
1.000000   9.000000   38.000000  140.000000 68.000000  1.000000   1.000000   1.000000   1.000000   3.000000   3.000000   2.000000   0.000000   0.000000   0.000000   2.000000   1.000000   39.000000  5.300000   0.000000   0.000000   1.000000
1.000000   1.000000   37.800000  52.000000  24.000000  1.000000   3.000000   3.000000   1.000000   4.000000   4.000000   1.000000   2.000000   3.000000   5.700000   2.000000   5.000000   48.000000  6.600000   1.000000   3.700000   -1.000000
1.000000   1.000000   0.000000   70.000000  36.000000  1.000000   0.000000   3.000000   2.000000   2.000000   3.000000   2.000000   2.000000   0.000000   0.000000   4.000000   5.000000   36.000000  7.300000   0.000000   0.000000   1.000000
1.000000   1.000000   38.300000  52.000000  96.000000  0.000000   3.000000   3.000000   1.000000   0.000000   0.000000   0.000000   1.000000   1.000000   0.000000   1.000000   0.000000   43.000000  6.100000   0.000000   0.000000   1.000000
2.000000   1.000000   37.300000  50.000000  32.000000  1.000000   1.000000   3.000000   1.000000   1.000000   3.000000   2.000000   0.000000   0.000000   0.000000   1.000000   0.000000   44.000000  7.000000   0.000000   0.000000   1.000000
1.000000   1.000000   38.700000  60.000000  32.000000  4.000000   3.000000   2.000000   2.000000   4.000000   4.000000   4.000000   0.000000   0.000000   0.000000   4.000000   5.000000   53.000000  64.000000  3.000000   2.000000   -1.000000
1.000000   9.000000   38.400000  84.000000  40.000000  3.000000   3.000000   2.000000   1.000000   3.000000   3.000000   3.000000   1.000000   1.000000   0.000000   0.000000   0.000000   36.000000  6.600000   2.000000   2.800000   -1.000000
1.000000   1.000000   0.000000   70.000000  16.000000  3.000000   4.000000   5.000000   2.000000   2.000000   3.000000   2.000000   2.000000   1.000000   0.000000   4.000000   5.000000   60.000000  7.500000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.300000  40.000000  16.000000  3.000000   0.000000   0.000000   1.000000   1.000000   3.000000   2.000000   0.000000   0.000000   0.000000   0.000000   0.000000   38.000000  58.000000  1.000000   2.000000   1.000000
1.000000   1.000000   0.000000   40.000000  0.000000   2.000000   1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   1.000000   1.000000   0.000000   0.000000   5.000000   39.000000  56.000000  0.000000   0.000000   1.000000
1.000000   1.000000   36.800000  60.000000  28.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   10.000000  -1.000000
1.000000   1.000000   38.400000  44.000000  24.000000  3.000000   0.000000   4.000000   0.000000   5.000000   4.000000   3.000000   2.000000   1.000000   0.000000   4.000000   5.000000   50.000000  77.000000  0.000000   0.000000   1.000000
2.000000   1.000000   0.000000   0.000000   40.000000  3.000000   1.000000   1.000000   1.000000   3.000000   3.000000   2.000000   0.000000   0.000000   0.000000   0.000000   0.000000   45.000000  70.000000  0.000000   0.000000   1.000000
1.000000   1.000000   38.000000  44.000000  12.000000  1.000000   1.000000   1.000000   1.000000   3.000000   3.000000   3.000000   2.000000   1.000000   0.000000   4.000000   5.000000   42.000000  65.000000  0.000000   0.000000   1.000000
2.000000   1.000000   39.500000  0.000000   0.000000   3.000000   3.000000   4.000000   2.000000   3.000000   4.000000   3.000000   0.000000   3.000000   5.500000   4.000000   5.000000   0.000000   6.700000   1.000000   0.000000   -1.000000
1.000000   1.000000   36.500000  78.000000  30.000000  1.000000   0.000000   1.000000   1.000000   5.000000   3.000000   1.000000   0.000000   1.000000   0.000000   0.000000   0.000000   34.000000  75.000000  2.000000   1.000000   1.000000
2.000000   1.000000   38.100000  56.000000  20.000000  2.000000   1.000000   2.000000   1.000000   1.000000   3.000000   1.000000   1.000000   1.000000   0.000000   0.000000   0.000000   46.000000  70.000000  0.000000   0.000000   1.000000
1.000000   1.000000   39.400000  54.000000  66.000000  1.000000   1.000000   2.000000   1.000000   2.000000   3.000000   2.000000   1.000000   1.000000   0.000000   3.000000   4.000000   39.000000  6.000000   2.000000   0.000000   1.000000
1.000000   1.000000   38.300000  80.000000  40.000000  0.000000   0.000000   6.000000   2.000000   4.000000   3.000000   1.000000   0.000000   2.000000   0.000000   1.000000   4.000000   67.000000  10.200000  2.000000   1.000000   -1.000000
2.000000   1.000000   38.700000  40.000000  28.000000  2.000000   1.000000   1.000000   1.000000   3.000000   1.000000   1.000000   0.000000   0.000000   0.000000   1.000000   0.000000   39.000000  62.000000  1.000000   1.000000   1.000000
1.000000   1.000000   38.200000  64.000000  24.000000  1.000000   1.000000   3.000000   1.000000   4.000000   4.000000   3.000000   2.000000   1.000000   0.000000   4.000000   4.000000   45.000000  7.500000   1.000000   2.000000   -1.000000
2.000000   1.000000   37.600000  48.000000  20.000000  3.000000   1.000000   4.000000   1.000000   1.000000   1.000000   3.000000   2.000000   1.000000   0.000000   1.000000   1.000000   37.000000  5.500000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.000000  42.000000  68.000000  4.000000   1.000000   1.000000   1.000000   3.000000   3.000000   2.000000   2.000000   2.000000   0.000000   4.000000   4.000000   41.000000  7.600000   0.000000   0.000000   1.000000
1.000000   1.000000   38.700000  0.000000   0.000000   3.000000   1.000000   3.000000   1.000000   5.000000   4.000000   2.000000   0.000000   0.000000   0.000000   0.000000   0.000000   33.000000  6.500000   2.000000   0.000000   1.000000
1.000000   1.000000   37.400000  50.000000  32.000000  3.000000   3.000000   0.000000   1.000000   4.000000   4.000000   1.000000   2.000000   1.000000   0.000000   1.000000   0.000000   45.000000  7.900000   2.000000   1.000000   1.000000
1.000000   1.000000   37.400000  84.000000  20.000000  0.000000   0.000000   3.000000   1.000000   2.000000   3.000000   3.000000   0.000000   0.000000   0.000000   0.000000   0.000000   31.000000  61.000000  0.000000   1.000000   -1.000000
1.000000   1.000000   38.400000  49.000000  0.000000   0.000000   0.000000   1.000000   1.000000   0.000000   0.000000   1.000000   2.000000   1.000000   0.000000   0.000000   0.000000   44.000000  7.600000   0.000000   0.000000   1.000000
1.000000   1.000000   37.800000  30.000000  12.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
2.000000   1.000000   37.600000  88.000000  36.000000  3.000000   1.000000   1.000000   1.000000   3.000000   3.000000   2.000000   1.000000   3.000000   1.500000   0.000000   0.000000   44.000000  6.000000   0.000000   0.000000   -1.000000
2.000000   1.000000   37.900000  40.000000  24.000000  1.000000   1.000000   1.000000   1.000000   2.000000   3.000000   1.000000   0.000000   0.000000   0.000000   0.000000   3.000000   40.000000  5.700000   0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   100.000000 0.000000   3.000000   0.000000   4.000000   2.000000   5.000000   4.000000   0.000000   2.000000   0.000000   0.000000   2.000000   0.000000   59.000000  6.300000   0.000000   0.000000   -1.000000
1.000000   9.000000   38.100000  136.000000 48.000000  3.000000   3.000000   3.000000   1.000000   5.000000   1.000000   3.000000   2.000000   2.000000   4.400000   2.000000   0.000000   33.000000  4.900000   2.000000   2.900000   -1.000000
1.000000   1.000000   0.000000   0.000000   0.000000   3.000000   3.000000   3.000000   2.000000   5.000000   3.000000   3.000000   3.000000   2.000000   0.000000   4.000000   5.000000   46.000000  5.900000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.000000  48.000000  0.000000   1.000000   1.000000   1.000000   1.000000   1.000000   2.000000   4.000000   2.000000   2.000000   0.000000   4.000000   5.000000   0.000000   0.000000   0.000000   0.000000   1.000000
2.000000   1.000000   38.000000  56.000000  0.000000   1.000000   2.000000   3.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   0.000000   1.000000   1.000000   42.000000  71.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.000000  60.000000  32.000000  1.000000   1.000000   0.000000   1.000000   3.000000   3.000000   0.000000   1.000000   1.000000   0.000000   0.000000   0.000000   50.000000  7.000000   1.000000   1.000000   1.000000
1.000000   1.000000   38.100000  44.000000  9.000000   3.000000   1.000000   1.000000   1.000000   2.000000   2.000000   1.000000   1.000000   1.000000   0.000000   4.000000   5.000000   31.000000  7.300000   0.000000   0.000000   1.000000
2.000000   1.000000   36.000000  42.000000  30.000000  0.000000   0.000000   5.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   64.000000  6.800000   0.000000   0.000000   -1.000000
1.000000   1.000000   0.000000   120.000000 0.000000   4.000000   3.000000   6.000000   2.000000   5.000000   4.000000   4.000000   0.000000   0.000000   0.000000   4.000000   5.000000   57.000000  4.500000   3.000000   3.900000   -1.000000
1.000000   1.000000   37.800000  48.000000  28.000000  1.000000   1.000000   1.000000   2.000000   1.000000   2.000000   1.000000   2.000000   0.000000   0.000000   1.000000   1.000000   46.000000  5.900000   2.000000   7.000000   1.000000
1.000000   1.000000   37.100000  84.000000  40.000000  3.000000   3.000000   6.000000   1.000000   2.000000   4.000000   4.000000   3.000000   2.000000   2.000000   4.000000   5.000000   75.000000  81.000000  0.000000   0.000000   -1.000000
2.000000   1.000000   0.000000   80.000000  32.000000  3.000000   3.000000   2.000000   1.000000   2.000000   3.000000   3.000000   2.000000   1.000000   0.000000   3.000000   0.000000   50.000000  80.000000  0.000000   0.000000   1.000000
1.000000   1.000000   38.200000  48.000000  0.000000   1.000000   3.000000   3.000000   1.000000   3.000000   4.000000   4.000000   1.000000   3.000000   2.000000   4.000000   5.000000   42.000000  71.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.000000  44.000000  12.000000  2.000000   1.000000   3.000000   1.000000   3.000000   4.000000   3.000000   1.000000   2.000000   6.500000   1.000000   4.000000   33.000000  6.500000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.300000  132.000000 0.000000   0.000000   3.000000   6.000000   2.000000   2.000000   4.000000   2.000000   2.000000   3.000000   6.200000   4.000000   4.000000   57.000000  8.000000   0.000000   5.200000   1.000000
2.000000   1.000000   38.700000  48.000000  24.000000  0.000000   0.000000   0.000000   0.000000   1.000000   1.000000   0.000000   1.000000   1.000000   0.000000   1.000000   0.000000   34.000000  63.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.900000  44.000000  14.000000  3.000000   1.000000   1.000000   1.000000   2.000000   3.000000   2.000000   0.000000   0.000000   0.000000   0.000000   2.000000   33.000000  64.000000  0.000000   0.000000   1.000000
1.000000   1.000000   39.300000  0.000000   0.000000   4.000000   3.000000   6.000000   2.000000   4.000000   4.000000   2.000000   1.000000   3.000000   4.000000   4.000000   4.000000   75.000000  0.000000   3.000000   4.300000   -1.000000
1.000000   1.000000   0.000000   100.000000 0.000000   3.000000   3.000000   4.000000   2.000000   0.000000   4.000000   4.000000   2.000000   1.000000   2.000000   0.000000   0.000000   68.000000  64.000000  3.000000   2.000000   1.000000
2.000000   1.000000   38.600000  48.000000  20.000000  3.000000   1.000000   1.000000   1.000000   1.000000   3.000000   2.000000   2.000000   1.000000   0.000000   3.000000   2.000000   50.000000  7.300000   1.000000   0.000000   1.000000
2.000000   1.000000   38.800000  48.000000  40.000000  1.000000   1.000000   3.000000   1.000000   3.000000   3.000000   4.000000   2.000000   0.000000   0.000000   0.000000   5.000000   41.000000  65.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.000000  48.000000  20.000000  3.000000   3.000000   4.000000   1.000000   1.000000   4.000000   2.000000   2.000000   0.000000   5.000000   0.000000   2.000000   49.000000  8.300000   1.000000   0.000000   1.000000
2.000000   1.000000   38.600000  52.000000  20.000000  1.000000   1.000000   1.000000   1.000000   3.000000   3.000000   2.000000   1.000000   1.000000   0.000000   1.000000   3.000000   36.000000  6.600000   1.000000   5.000000   1.000000
1.000000   1.000000   37.800000  60.000000  24.000000  1.000000   0.000000   3.000000   2.000000   0.000000   4.000000   4.000000   2.000000   3.000000   2.000000   0.000000   5.000000   52.000000  75.000000  0.000000   0.000000   -1.000000
2.000000   1.000000   38.000000  42.000000  40.000000  3.000000   1.000000   1.000000   1.000000   3.000000   3.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   1.000000
2.000000   1.000000   0.000000   0.000000   12.000000  1.000000   1.000000   2.000000   1.000000   2.000000   1.000000   2.000000   3.000000   1.000000   0.000000   1.000000   3.000000   44.000000  7.500000   2.000000   0.000000   1.000000
1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   4.000000   0.000000   0.000000   1.000000   1.000000   0.000000   0.000000   5.000000   35.000000  58.000000  2.000000   1.000000   1.000000
1.000000   1.000000   38.300000  42.000000  24.000000  0.000000   0.000000   0.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   40.000000  8.500000   0.000000   0.000000   -1.000000
2.000000   1.000000   39.500000  60.000000  10.000000  3.000000   0.000000   0.000000   2.000000   3.000000   3.000000   2.000000   2.000000   1.000000   0.000000   3.000000   0.000000   38.000000  56.000000  1.000000   0.000000   1.000000
1.000000   1.000000   38.000000  66.000000  20.000000  1.000000   3.000000   3.000000   1.000000   5.000000   3.000000   1.000000   1.000000   1.000000   0.000000   3.000000   0.000000   46.000000  46.000000  3.000000   2.000000   -1.000000
1.000000   1.000000   38.700000  76.000000  0.000000   1.000000   1.000000   5.000000   2.000000   3.000000   3.000000   2.000000   2.000000   2.000000   0.000000   4.000000   4.000000   50.000000  8.000000   0.000000   0.000000   1.000000
1.000000   1.000000   39.400000  120.000000 48.000000  0.000000   0.000000   5.000000   1.000000   0.000000   3.000000   3.000000   1.000000   0.000000   0.000000   4.000000   0.000000   56.000000  64.000000  1.000000   2.000000   -1.000000
1.000000   1.000000   38.300000  40.000000  18.000000  1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   1.000000   0.000000   0.000000   0.000000   2.000000   1.000000   43.000000  5.900000   1.000000   0.000000   1.000000
2.000000   1.000000   0.000000   44.000000  24.000000  1.000000   1.000000   1.000000   1.000000   3.000000   3.000000   1.000000   2.000000   1.000000   0.000000   0.000000   1.000000   0.000000   6.300000   0.000000   0.000000   1.000000
1.000000   1.000000   38.400000  104.000000 40.000000  1.000000   1.000000   3.000000   1.000000   2.000000   4.000000   2.000000   2.000000   3.000000   6.500000   0.000000   4.000000   55.000000  8.500000   0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   65.000000  24.000000  0.000000   0.000000   0.000000   2.000000   5.000000   0.000000   4.000000   3.000000   1.000000   0.000000   0.000000   5.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
2.000000   1.000000   37.500000  44.000000  20.000000  1.000000   1.000000   3.000000   1.000000   0.000000   1.000000   1.000000   0.000000   0.000000   0.000000   1.000000   0.000000   35.000000  7.200000   0.000000   0.000000   1.000000
2.000000   1.000000   39.000000  86.000000  16.000000  3.000000   3.000000   5.000000   0.000000   3.000000   3.000000   3.000000   0.000000   2.000000   0.000000   0.000000   0.000000   68.000000  5.800000   3.000000   6.000000   -1.000000
1.000000   1.000000   38.500000  129.000000 48.000000  3.000000   3.000000   3.000000   1.000000   2.000000   4.000000   3.000000   1.000000   3.000000   2.000000   0.000000   0.000000   57.000000  66.000000  3.000000   2.000000   1.000000
1.000000   1.000000   0.000000   104.000000 0.000000   3.000000   3.000000   5.000000   2.000000   2.000000   4.000000   3.000000   0.000000   3.000000   0.000000   4.000000   4.000000   69.000000  8.600000   2.000000   3.400000   -1.000000
2.000000   1.000000   0.000000   0.000000   0.000000   3.000000   4.000000   6.000000   0.000000   4.000000   0.000000   4.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   1.000000
1.000000   1.000000   38.200000  60.000000  30.000000  1.000000   1.000000   3.000000   1.000000   3.000000   3.000000   1.000000   2.000000   1.000000   0.000000   3.000000   2.000000   48.000000  66.000000  0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   68.000000  14.000000  0.000000   0.000000   4.000000   1.000000   4.000000   0.000000   0.000000   0.000000   1.000000   4.300000   0.000000   0.000000   0.000000   0.000000   2.000000   2.800000   -1.000000
1.000000   1.000000   0.000000   60.000000  30.000000  3.000000   3.000000   4.000000   2.000000   5.000000   4.000000   4.000000   1.000000   1.000000   0.000000   4.000000   0.000000   45.000000  70.000000  3.000000   2.000000   1.000000
2.000000   1.000000   38.500000  100.000000 0.000000   3.000000   3.000000   5.000000   2.000000   4.000000   3.000000   4.000000   2.000000   1.000000   0.000000   4.000000   5.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.400000  84.000000  30.000000  3.000000   1.000000   5.000000   2.000000   4.000000   3.000000   3.000000   2.000000   3.000000   6.500000   4.000000   4.000000   47.000000  7.500000   3.000000   0.000000   -1.000000
2.000000   1.000000   37.800000  48.000000  14.000000  0.000000   0.000000   1.000000   1.000000   3.000000   0.000000   2.000000   1.000000   3.000000   5.300000   1.000000   0.000000   35.000000  7.500000   0.000000   0.000000   1.000000
1.000000   1.000000   38.000000  0.000000   24.000000  3.000000   3.000000   6.000000   2.000000   5.000000   0.000000   4.000000   1.000000   1.000000   0.000000   0.000000   0.000000   68.000000  7.800000   0.000000   0.000000   -1.000000
2.000000   1.000000   37.800000  56.000000  16.000000  1.000000   1.000000   2.000000   1.000000   2.000000   1.000000   1.000000   2.000000   1.000000   0.000000   1.000000   0.000000   44.000000  68.000000  1.000000   1.000000   1.000000
2.000000   1.000000   38.200000  68.000000  32.000000  2.000000   2.000000   2.000000   1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   0.000000   1.000000   1.000000   43.000000  65.000000  0.000000   0.000000   1.000000
1.000000   1.000000   38.500000  120.000000 60.000000  4.000000   3.000000   6.000000   2.000000   0.000000   3.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   54.000000  0.000000   0.000000   0.000000   1.000000
1.000000   1.000000   39.300000  64.000000  90.000000  2.000000   3.000000   1.000000   1.000000   0.000000   3.000000   1.000000   1.000000   2.000000   0.000000   0.000000   0.000000   39.000000  6.700000   0.000000   0.000000   1.000000
1.000000   1.000000   38.400000  80.000000  30.000000  4.000000   3.000000   1.000000   1.000000   3.000000   3.000000   3.000000   3.000000   3.000000   0.000000   4.000000   5.000000   32.000000  6.100000   3.000000   4.300000   1.000000
1.000000   1.000000   38.500000  60.000000  0.000000   1.000000   1.000000   0.000000   1.000000   0.000000   1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   33.000000  53.000000  1.000000   0.000000   1.000000
1.000000   1.000000   38.300000  60.000000  16.000000  3.000000   1.000000   1.000000   1.000000   2.000000   1.000000   1.000000   2.000000   2.000000   3.000000   1.000000   4.000000   30.000000  6.000000   1.000000   3.000000   1.000000
1.000000   1.000000   37.100000  40.000000  8.000000   0.000000   1.000000   4.000000   1.000000   3.000000   3.000000   1.000000   1.000000   1.000000   0.000000   3.000000   3.000000   23.000000  6.700000   3.000000   0.000000   1.000000
2.000000   9.000000   0.000000   100.000000 44.000000  2.000000   1.000000   1.000000   1.000000   4.000000   1.000000   1.000000   0.000000   0.000000   0.000000   1.000000   0.000000   37.000000  4.700000   0.000000   0.000000   1.000000
1.000000   1.000000   38.200000  48.000000  18.000000  1.000000   1.000000   1.000000   1.000000   3.000000   3.000000   3.000000   1.000000   2.000000   0.000000   4.000000   0.000000   48.000000  74.000000  1.000000   2.000000   1.000000
1.000000   1.000000   0.000000   60.000000  48.000000  3.000000   3.000000   4.000000   2.000000   4.000000   3.000000   4.000000   0.000000   0.000000   0.000000   0.000000   0.000000   58.000000  7.600000   0.000000   0.000000   -1.000000
2.000000   1.000000   37.900000  88.000000  24.000000  1.000000   1.000000   2.000000   1.000000   2.000000   2.000000   1.000000   0.000000   0.000000   0.000000   4.000000   1.000000   37.000000  56.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.000000  44.000000  12.000000  3.000000   1.000000   1.000000   0.000000   0.000000   1.000000   2.000000   0.000000   0.000000   0.000000   1.000000   0.000000   42.000000  64.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.500000  60.000000  20.000000  1.000000   1.000000   5.000000   2.000000   2.000000   2.000000   1.000000   2.000000   1.000000   0.000000   2.000000   3.000000   63.000000  7.500000   2.000000   2.300000   -1.000000
2.000000   1.000000   38.500000  96.000000  36.000000  3.000000   3.000000   0.000000   2.000000   2.000000   4.000000   2.000000   1.000000   2.000000   0.000000   4.000000   5.000000   70.000000  8.500000   0.000000   0.000000   -1.000000
2.000000   1.000000   38.300000  60.000000  20.000000  1.000000   1.000000   1.000000   2.000000   1.000000   3.000000   1.000000   0.000000   0.000000   0.000000   3.000000   0.000000   34.000000  66.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.500000  60.000000  40.000000  3.000000   1.000000   2.000000   1.000000   2.000000   1.000000   2.000000   0.000000   0.000000   0.000000   3.000000   2.000000   49.000000  59.000000  0.000000   0.000000   1.000000
1.000000   1.000000   37.300000  48.000000  12.000000  1.000000   0.000000   3.000000   1.000000   3.000000   1.000000   3.000000   2.000000   1.000000   0.000000   3.000000   3.000000   40.000000  6.600000   2.000000   0.000000   1.000000
1.000000   1.000000   38.500000  86.000000  0.000000   1.000000   1.000000   3.000000   1.000000   4.000000   4.000000   3.000000   2.000000   1.000000   0.000000   3.000000   5.000000   45.000000  7.400000   1.000000   3.400000   -1.000000
1.000000   1.000000   37.500000  48.000000  40.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   1.000000   1.000000   0.000000   0.000000   5.000000   41.000000  55.000000  3.000000   2.000000   -1.000000
2.000000   1.000000   37.200000  36.000000  9.000000   1.000000   1.000000   1.000000   1.000000   2.000000   3.000000   1.000000   2.000000   1.000000   0.000000   4.000000   1.000000   35.000000  5.700000   0.000000   0.000000   1.000000
1.000000   1.000000   39.200000  0.000000   23.000000  3.000000   1.000000   3.000000   1.000000   4.000000   4.000000   2.000000   2.000000   0.000000   0.000000   0.000000   0.000000   36.000000  6.600000   1.000000   3.000000   1.000000
2.000000   1.000000   38.500000  100.000000 0.000000   3.000000   3.000000   5.000000   2.000000   4.000000   3.000000   4.000000   2.000000   1.000000   0.000000   4.000000   5.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.500000  96.000000  30.000000  2.000000   3.000000   4.000000   2.000000   4.000000   4.000000   3.000000   2.000000   1.000000   0.000000   3.000000   5.000000   50.000000  65.000000  0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   45.000000  8.700000   0.000000   0.000000   -1.000000
1.000000   1.000000   37.800000  88.000000  80.000000  3.000000   3.000000   5.000000   2.000000   0.000000   3.000000   3.000000   2.000000   3.000000   0.000000   4.000000   5.000000   64.000000  89.000000  0.000000   0.000000   -1.000000
2.000000   1.000000   37.500000  44.000000  10.000000  3.000000   1.000000   1.000000   1.000000   3.000000   1.000000   2.000000   2.000000   0.000000   0.000000   3.000000   3.000000   43.000000  51.000000  1.000000   1.000000   1.000000
1.000000   1.000000   37.900000  68.000000  20.000000  0.000000   1.000000   2.000000   1.000000   2.000000   4.000000   2.000000   0.000000   0.000000   0.000000   1.000000   5.000000   45.000000  4.000000   3.000000   2.800000   -1.000000
1.000000   1.000000   38.000000  86.000000  24.000000  4.000000   3.000000   4.000000   1.000000   2.000000   4.000000   4.000000   1.000000   1.000000   0.000000   4.000000   5.000000   45.000000  5.500000   1.000000   10.100000  -1.000000
1.000000   9.000000   38.900000  120.000000 30.000000  1.000000   3.000000   2.000000   2.000000   3.000000   3.000000   3.000000   3.000000   1.000000   3.000000   0.000000   0.000000   47.000000  6.300000   1.000000   0.000000   1.000000
1.000000   1.000000   37.600000  45.000000  12.000000  3.000000   1.000000   3.000000   1.000000   0.000000   2.000000   2.000000   2.000000   1.000000   0.000000   1.000000   4.000000   39.000000  7.000000   2.000000   1.500000   1.000000
2.000000   1.000000   38.600000  56.000000  32.000000  2.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   2.000000   0.000000   0.000000   2.000000   0.000000   40.000000  7.000000   2.000000   2.100000   1.000000
1.000000   1.000000   37.800000  40.000000  12.000000  1.000000   1.000000   1.000000   1.000000   1.000000   2.000000   1.000000   2.000000   1.000000   0.000000   1.000000   2.000000   38.000000  7.000000   0.000000   0.000000   1.000000
2.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   1.000000
1.000000   1.000000   38.000000  76.000000  18.000000  0.000000   0.000000   0.000000   2.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   71.000000  11.000000  0.000000   0.000000   1.000000
1.000000   1.000000   38.100000  40.000000  36.000000  1.000000   2.000000   2.000000   1.000000   2.000000   2.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
1.000000   1.000000   0.000000   52.000000  28.000000  3.000000   3.000000   4.000000   1.000000   3.000000   4.000000   3.000000   2.000000   1.000000   0.000000   4.000000   4.000000   37.000000  8.100000   0.000000   0.000000   1.000000
1.000000   1.000000   39.200000  88.000000  58.000000  4.000000   4.000000   0.000000   2.000000   5.000000   4.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   2.000000   2.000000   -1.000000
1.000000   1.000000   38.500000  92.000000  40.000000  4.000000   3.000000   0.000000   1.000000   2.000000   4.000000   3.000000   0.000000   0.000000   0.000000   4.000000   0.000000   46.000000  67.000000  2.000000   2.000000   1.000000
1.000000   1.000000   0.000000   112.000000 13.000000  4.000000   4.000000   4.000000   1.000000   2.000000   3.000000   1.000000   2.000000   1.000000   4.500000   4.000000   4.000000   60.000000  6.300000   3.000000   0.000000   1.000000
1.000000   1.000000   37.700000  66.000000  12.000000  1.000000   1.000000   3.000000   1.000000   3.000000   3.000000   2.000000   2.000000   0.000000   0.000000   4.000000   4.000000   31.500000  6.200000   2.000000   1.600000   1.000000
1.000000   1.000000   38.800000  50.000000  14.000000  1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   1.000000   1.000000   1.000000   0.000000   3.000000   5.000000   38.000000  58.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.400000  54.000000  24.000000  1.000000   1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   2.000000   1.000000   0.000000   3.000000   2.000000   49.000000  7.200000   1.000000   8.000000   1.000000
1.000000   1.000000   39.200000  120.000000 20.000000  4.000000   3.000000   5.000000   2.000000   2.000000   3.000000   3.000000   1.000000   3.000000   0.000000   0.000000   4.000000   60.000000  8.800000   3.000000   0.000000   -1.000000
1.000000   9.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   45.000000  6.500000   2.000000   0.000000   1.000000
1.000000   1.000000   37.300000  90.000000  40.000000  3.000000   0.000000   6.000000   2.000000   5.000000   4.000000   3.000000   2.000000   2.000000   0.000000   1.000000   5.000000   65.000000  50.000000  3.000000   2.000000   -1.000000
1.000000   9.000000   38.500000  120.000000 70.000000  0.000000   0.000000   0.000000   0.000000   0.000000   1.000000   0.000000   2.000000   0.000000   0.000000   1.000000   0.000000   35.000000  54.000000  1.000000   1.000000   1.000000
1.000000   1.000000   38.500000  104.000000 40.000000  3.000000   3.000000   0.000000   1.000000   4.000000   3.000000   4.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   1.000000
2.000000   1.000000   39.500000  92.000000  28.000000  3.000000   3.000000   6.000000   1.000000   5.000000   4.000000   1.000000   0.000000   3.000000   0.000000   4.000000   0.000000   72.000000  6.400000   0.000000   3.600000   -1.000000
1.000000   1.000000   38.500000  30.000000  18.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   40.000000  7.700000   0.000000   0.000000   1.000000
1.000000   1.000000   38.300000  72.000000  30.000000  4.000000   3.000000   3.000000   2.000000   3.000000   3.000000   3.000000   2.000000   1.000000   0.000000   3.000000   5.000000   43.000000  7.000000   2.000000   3.900000   1.000000
2.000000   1.000000   37.500000  48.000000  30.000000  4.000000   1.000000   3.000000   1.000000   0.000000   2.000000   1.000000   1.000000   1.000000   0.000000   1.000000   1.000000   48.000000  8.600000   0.000000   0.000000   1.000000
1.000000   1.000000   38.100000  52.000000  24.000000  1.000000   1.000000   5.000000   1.000000   4.000000   3.000000   1.000000   2.000000   3.000000   7.000000   1.000000   0.000000   54.000000  7.500000   2.000000   2.600000   -1.000000
2.000000   1.000000   38.200000  42.000000  26.000000  1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   2.000000   0.000000   0.000000   0.000000   1.000000   0.000000   36.000000  6.900000   0.000000   0.000000   1.000000
2.000000   1.000000   37.900000  54.000000  42.000000  2.000000   1.000000   5.000000   1.000000   3.000000   1.000000   1.000000   0.000000   1.000000   0.000000   0.000000   2.000000   47.000000  54.000000  3.000000   1.000000   1.000000
2.000000   1.000000   36.100000  88.000000  0.000000   3.000000   3.000000   3.000000   1.000000   3.000000   3.000000   2.000000   2.000000   3.000000   0.000000   0.000000   4.000000   45.000000  7.000000   3.000000   4.800000   -1.000000
1.000000   1.000000   38.100000  70.000000  22.000000  0.000000   1.000000   0.000000   1.000000   5.000000   3.000000   0.000000   0.000000   0.000000   0.000000   0.000000   5.000000   36.000000  65.000000  0.000000   0.000000   -1.000000
1.000000   1.000000   38.000000  90.000000  30.000000  4.000000   3.000000   4.000000   2.000000   5.000000   4.000000   4.000000   0.000000   0.000000   0.000000   4.000000   5.000000   55.000000  6.100000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.200000  52.000000  16.000000  1.000000   1.000000   2.000000   1.000000   1.000000   2.000000   1.000000   1.000000   1.000000   0.000000   1.000000   0.000000   43.000000  8.100000   0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   36.000000  32.000000  1.000000   1.000000   4.000000   1.000000   5.000000   3.000000   3.000000   2.000000   3.000000   4.000000   0.000000   4.000000   41.000000  5.900000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.400000  92.000000  20.000000  1.000000   0.000000   0.000000   2.000000   0.000000   3.000000   3.000000   0.000000   0.000000   0.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   1.000000
1.000000   9.000000   38.200000  124.000000 88.000000  1.000000   3.000000   2.000000   1.000000   2.000000   3.000000   4.000000   0.000000   0.000000   0.000000   0.000000   0.000000   47.000000  8.000000   1.000000   0.000000   1.000000
2.000000   1.000000   0.000000   96.000000  0.000000   3.000000   3.000000   3.000000   2.000000   5.000000   4.000000   4.000000   0.000000   1.000000   0.000000   4.000000   5.000000   60.000000  0.000000   0.000000   0.000000   -1.000000
1.000000   1.000000   37.600000  68.000000  32.000000  3.000000   0.000000   3.000000   1.000000   4.000000   2.000000   4.000000   2.000000   2.000000   6.500000   1.000000   5.000000   47.000000  7.200000   1.000000   0.000000   1.000000
1.000000   1.000000   38.100000  88.000000  24.000000  3.000000   3.000000   4.000000   1.000000   5.000000   4.000000   3.000000   2.000000   1.000000   0.000000   3.000000   4.000000   41.000000  4.600000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.000000  108.000000 60.000000  2.000000   3.000000   4.000000   1.000000   4.000000   3.000000   3.000000   2.000000   0.000000   0.000000   3.000000   4.000000   0.000000   0.000000   3.000000   0.000000   1.000000
2.000000   1.000000   38.200000  48.000000  0.000000   2.000000   0.000000   1.000000   2.000000   3.000000   3.000000   1.000000   2.000000   1.000000   0.000000   0.000000   2.000000   34.000000  6.600000   0.000000   0.000000   1.000000
1.000000   1.000000   39.300000  100.000000 51.000000  4.000000   4.000000   6.000000   1.000000   2.000000   4.000000   1.000000   1.000000   3.000000   2.000000   0.000000   4.000000   66.000000  13.000000  3.000000   2.000000   -1.000000
2.000000   1.000000   36.600000  42.000000  18.000000  3.000000   3.000000   2.000000   1.000000   1.000000   4.000000   1.000000   1.000000   1.000000   0.000000   0.000000   5.000000   52.000000  7.100000   0.000000   0.000000   -1.000000
1.000000   9.000000   38.800000  124.000000 36.000000  3.000000   1.000000   2.000000   1.000000   2.000000   3.000000   4.000000   1.000000   1.000000   0.000000   4.000000   4.000000   50.000000  7.600000   3.000000   0.000000   -1.000000
2.000000   1.000000   0.000000   112.000000 24.000000  3.000000   3.000000   4.000000   2.000000   5.000000   4.000000   2.000000   0.000000   0.000000   0.000000   4.000000   0.000000   40.000000  5.300000   3.000000   2.600000   1.000000
1.000000   1.000000   0.000000   80.000000  0.000000   3.000000   3.000000   3.000000   1.000000   4.000000   4.000000   4.000000   0.000000   0.000000   0.000000   4.000000   5.000000   43.000000  70.000000  0.000000   0.000000   1.000000
1.000000   9.000000   38.800000  184.000000 84.000000  1.000000   0.000000   1.000000   1.000000   4.000000   1.000000   3.000000   0.000000   0.000000   0.000000   2.000000   0.000000   33.000000  3.300000   0.000000   0.000000   -1.000000
1.000000   1.000000   37.500000  72.000000  0.000000   2.000000   1.000000   1.000000   1.000000   2.000000   1.000000   1.000000   1.000000   1.000000   0.000000   1.000000   0.000000   35.000000  65.000000  2.000000   2.000000   -1.000000
1.000000   1.000000   38.700000  96.000000  28.000000  3.000000   3.000000   4.000000   1.000000   0.000000   4.000000   0.000000   0.000000   3.000000   7.500000   0.000000   0.000000   64.000000  9.000000   0.000000   0.000000   -1.000000
2.000000   1.000000   37.500000  52.000000  12.000000  1.000000   1.000000   1.000000   1.000000   2.000000   3.000000   2.000000   2.000000   1.000000   0.000000   3.000000   5.000000   36.000000  61.000000  1.000000   1.000000   1.000000
1.000000   1.000000   40.800000  72.000000  42.000000  3.000000   3.000000   1.000000   1.000000   2.000000   3.000000   1.000000   2.000000   1.000000   0.000000   0.000000   0.000000   54.000000  7.400000   3.000000   0.000000   -1.000000
2.000000   1.000000   38.000000  40.000000  25.000000  0.000000   1.000000   1.000000   1.000000   4.000000   3.000000   2.000000   1.000000   1.000000   0.000000   4.000000   0.000000   37.000000  69.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.400000  48.000000  16.000000  2.000000   1.000000   1.000000   1.000000   1.000000   0.000000   2.000000   2.000000   1.000000   0.000000   0.000000   2.000000   39.000000  6.500000   0.000000   0.000000   1.000000
2.000000   9.000000   38.600000  88.000000  28.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   35.000000  5.900000   0.000000   0.000000   1.000000
1.000000   1.000000   37.100000  75.000000  36.000000  0.000000   0.000000   3.000000   2.000000   4.000000   4.000000   2.000000   2.000000   3.000000   5.000000   4.000000   4.000000   48.000000  7.400000   3.000000   3.200000   -1.000000
1.000000   1.000000   38.300000  44.000000  21.000000  3.000000   1.000000   2.000000   1.000000   3.000000   3.000000   3.000000   2.000000   1.000000   0.000000   1.000000   5.000000   44.000000  6.500000   2.000000   4.400000   1.000000
2.000000   1.000000   0.000000   56.000000  68.000000  3.000000   1.000000   1.000000   1.000000   3.000000   3.000000   1.000000   2.000000   1.000000   0.000000   1.000000   0.000000   40.000000  6.000000   0.000000   0.000000   -1.000000
2.000000   1.000000   38.600000  68.000000  20.000000  2.000000   1.000000   3.000000   1.000000   3.000000   3.000000   2.000000   1.000000   1.000000   0.000000   1.000000   5.000000   38.000000  6.500000   1.000000   0.000000   1.000000
2.000000   1.000000   38.300000  54.000000  18.000000  3.000000   1.000000   2.000000   1.000000   2.000000   3.000000   2.000000   0.000000   3.000000   5.400000   0.000000   4.000000   44.000000  7.200000   3.000000   0.000000   1.000000
1.000000   1.000000   38.200000  42.000000  20.000000  0.000000   0.000000   1.000000   1.000000   0.000000   3.000000   0.000000   0.000000   0.000000   0.000000   3.000000   0.000000   47.000000  60.000000  0.000000   0.000000   1.000000
1.000000   1.000000   39.300000  64.000000  90.000000  2.000000   3.000000   1.000000   1.000000   0.000000   3.000000   1.000000   1.000000   2.000000   6.500000   1.000000   5.000000   39.000000  6.700000   0.000000   0.000000   1.000000
1.000000   1.000000   37.500000  60.000000  50.000000  3.000000   3.000000   1.000000   1.000000   3.000000   3.000000   2.000000   2.000000   2.000000   3.500000   3.000000   4.000000   35.000000  6.500000   0.000000   0.000000   -1.000000
1.000000   1.000000   37.700000  80.000000  0.000000   3.000000   3.000000   6.000000   1.000000   5.000000   4.000000   1.000000   2.000000   3.000000   0.000000   3.000000   1.000000   50.000000  55.000000  3.000000   2.000000   1.000000
1.000000   1.000000   0.000000   100.000000 30.000000  3.000000   3.000000   4.000000   2.000000   5.000000   4.000000   4.000000   3.000000   3.000000   0.000000   4.000000   4.000000   52.000000  6.600000   0.000000   0.000000   1.000000
1.000000   1.000000   37.700000  120.000000 28.000000  3.000000   3.000000   3.000000   1.000000   5.000000   3.000000   3.000000   1.000000   1.000000   0.000000   0.000000   0.000000   65.000000  7.000000   3.000000   0.000000   -1.000000
1.000000   1.000000   0.000000   76.000000  0.000000   0.000000   3.000000   0.000000   0.000000   0.000000   4.000000   4.000000   0.000000   0.000000   0.000000   0.000000   5.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
1.000000   9.000000   38.800000  150.000000 50.000000  1.000000   3.000000   6.000000   2.000000   5.000000   3.000000   2.000000   1.000000   1.000000   0.000000   0.000000   0.000000   50.000000  6.200000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.000000  36.000000  16.000000  3.000000   1.000000   1.000000   1.000000   4.000000   2.000000   2.000000   3.000000   3.000000   2.000000   3.000000   0.000000   37.000000  75.000000  2.000000   1.000000   -1.000000
2.000000   1.000000   36.900000  50.000000  40.000000  2.000000   3.000000   3.000000   1.000000   1.000000   3.000000   2.000000   3.000000   1.000000   7.000000   0.000000   0.000000   37.500000  6.500000   0.000000   0.000000   1.000000
2.000000   1.000000   37.800000  40.000000  16.000000  1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   0.000000   0.000000   0.000000   1.000000   1.000000   37.000000  6.800000   0.000000   0.000000   1.000000
2.000000   1.000000   38.200000  56.000000  40.000000  4.000000   3.000000   1.000000   1.000000   2.000000   4.000000   3.000000   2.000000   2.000000   7.500000   0.000000   0.000000   47.000000  7.200000   1.000000   2.500000   1.000000
1.000000   1.000000   38.600000  48.000000  12.000000  0.000000   0.000000   1.000000   0.000000   1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   36.000000  67.000000  0.000000   0.000000   1.000000
2.000000   1.000000   40.000000  78.000000  0.000000   3.000000   3.000000   5.000000   1.000000   2.000000   3.000000   1.000000   1.000000   1.000000   0.000000   4.000000   1.000000   66.000000  6.500000   0.000000   0.000000   -1.000000
1.000000   1.000000   0.000000   70.000000  16.000000  3.000000   4.000000   5.000000   2.000000   2.000000   3.000000   2.000000   2.000000   1.000000   0.000000   4.000000   5.000000   60.000000  7.500000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.200000  72.000000  18.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   35.000000  6.400000   0.000000   0.000000   1.000000
2.000000   1.000000   38.500000  54.000000  0.000000   1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   1.000000   2.000000   1.000000   0.000000   1.000000   0.000000   40.000000  6.800000   2.000000   7.000000   1.000000
1.000000   1.000000   38.500000  66.000000  24.000000  1.000000   1.000000   1.000000   1.000000   3.000000   3.000000   1.000000   2.000000   1.000000   0.000000   4.000000   5.000000   40.000000  6.700000   1.000000   0.000000   1.000000
2.000000   1.000000   37.800000  82.000000  12.000000  3.000000   1.000000   1.000000   2.000000   4.000000   0.000000   3.000000   1.000000   3.000000   0.000000   0.000000   0.000000   50.000000  7.000000   0.000000   0.000000   -1.000000
2.000000   9.000000   39.500000  84.000000  30.000000  0.000000   0.000000   0.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   28.000000  5.000000   0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   1.000000
1.000000   1.000000   38.000000  50.000000  36.000000  0.000000   1.000000   1.000000   1.000000   3.000000   2.000000   2.000000   0.000000   0.000000   0.000000   3.000000   0.000000   39.000000  6.600000   1.000000   5.300000   1.000000
2.000000   1.000000   38.600000  45.000000  16.000000  2.000000   1.000000   2.000000   1.000000   1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   1.000000   1.000000   43.000000  58.000000  0.000000   0.000000   1.000000
1.000000   1.000000   38.900000  80.000000  44.000000  3.000000   3.000000   3.000000   1.000000   2.000000   3.000000   3.000000   2.000000   2.000000   7.000000   3.000000   1.000000   54.000000  6.500000   3.000000   0.000000   -1.000000
1.000000   1.000000   37.000000  66.000000  20.000000  1.000000   3.000000   2.000000   1.000000   4.000000   3.000000   3.000000   1.000000   0.000000   0.000000   1.000000   5.000000   35.000000  6.900000   2.000000   0.000000   -1.000000
1.000000   1.000000   0.000000   78.000000  24.000000  3.000000   3.000000   3.000000   1.000000   0.000000   3.000000   0.000000   2.000000   1.000000   0.000000   0.000000   4.000000   43.000000  62.000000  0.000000   2.000000   -1.000000
2.000000   1.000000   38.500000  40.000000  16.000000  1.000000   1.000000   1.000000   1.000000   2.000000   1.000000   1.000000   0.000000   0.000000   0.000000   3.000000   2.000000   37.000000  67.000000  0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   120.000000 70.000000  4.000000   0.000000   4.000000   2.000000   2.000000   4.000000   0.000000   0.000000   0.000000   0.000000   0.000000   5.000000   55.000000  65.000000  0.000000   0.000000   -1.000000
2.000000   1.000000   37.200000  72.000000  24.000000  3.000000   2.000000   4.000000   2.000000   4.000000   3.000000   3.000000   3.000000   1.000000   0.000000   4.000000   4.000000   44.000000  0.000000   3.000000   3.300000   -1.000000
1.000000   1.000000   37.500000  72.000000  30.000000  4.000000   3.000000   4.000000   1.000000   4.000000   4.000000   3.000000   2.000000   1.000000   0.000000   3.000000   5.000000   60.000000  6.800000   0.000000   0.000000   -1.000000
1.000000   1.000000   36.500000  100.000000 24.000000  3.000000   3.000000   3.000000   1.000000   3.000000   3.000000   3.000000   3.000000   1.000000   0.000000   4.000000   4.000000   50.000000  6.000000   3.000000   3.400000   1.000000
1.000000   1.000000   37.200000  40.000000  20.000000  0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   4.000000   1.000000   36.000000  62.000000  1.000000   1.000000   -1.000000

測試數據:
2.000000    1.000000   38.500000  54.000000  20.000000  0.000000   1.000000   2.000000   2.000000   3.000000   4.000000   1.000000   2.000000   2.000000   5.900000   0.000000   2.000000   42.000000  6.300000   0.000000   0.000000   1.000000
2.000000   1.000000   37.600000  48.000000  36.000000  0.000000   0.000000   1.000000   1.000000   0.000000   3.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   44.000000  6.300000   1.000000   5.000000   1.000000
1.000000   1.000000   37.700000  44.000000  28.000000  0.000000   4.000000   3.000000   2.000000   5.000000   4.000000   4.000000   1.000000   1.000000   0.000000   3.000000   5.000000   45.000000  70.000000  3.000000   2.000000   1.000000
1.000000   1.000000   37.000000  56.000000  24.000000  3.000000   1.000000   4.000000   2.000000   4.000000   4.000000   3.000000   1.000000   1.000000   0.000000   0.000000   0.000000   35.000000  61.000000  3.000000   2.000000   -1.000000
2.000000   1.000000   38.000000  42.000000  12.000000  3.000000   0.000000   3.000000   1.000000   1.000000   0.000000   1.000000   0.000000   0.000000   0.000000   0.000000   2.000000   37.000000  5.800000   0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   60.000000  40.000000  3.000000   0.000000   1.000000   1.000000   0.000000   4.000000   0.000000   3.000000   2.000000   0.000000   0.000000   5.000000   42.000000  72.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.400000  80.000000  60.000000  3.000000   2.000000   2.000000   1.000000   3.000000   2.000000   1.000000   2.000000   2.000000   0.000000   1.000000   1.000000   54.000000  6.900000   0.000000   0.000000   1.000000
2.000000   1.000000   37.800000  48.000000  12.000000  2.000000   1.000000   2.000000   1.000000   3.000000   0.000000   1.000000   2.000000   0.000000   0.000000   2.000000   0.000000   48.000000  7.300000   1.000000   0.000000   1.000000
2.000000   1.000000   37.900000  45.000000  36.000000  3.000000   3.000000   3.000000   2.000000   2.000000   3.000000   1.000000   2.000000   1.000000   0.000000   3.000000   0.000000   33.000000  5.700000   3.000000   0.000000   1.000000
2.000000   1.000000   39.000000  84.000000  12.000000  3.000000   1.000000   5.000000   1.000000   2.000000   4.000000   2.000000   1.000000   2.000000   7.000000   0.000000   4.000000   62.000000  5.900000   2.000000   2.200000   -1.000000
2.000000   1.000000   38.200000  60.000000  24.000000  3.000000   1.000000   3.000000   2.000000   3.000000   3.000000   2.000000   3.000000   3.000000   0.000000   4.000000   4.000000   53.000000  7.500000   2.000000   1.400000   1.000000
1.000000   1.000000   0.000000   140.000000 0.000000   0.000000   0.000000   4.000000   2.000000   5.000000   4.000000   4.000000   1.000000   1.000000   0.000000   0.000000   5.000000   30.000000  69.000000  0.000000   0.000000   -1.000000
1.000000   1.000000   37.900000  120.000000 60.000000  3.000000   3.000000   3.000000   1.000000   5.000000   4.000000   4.000000   2.000000   2.000000   7.500000   4.000000   5.000000   52.000000  6.600000   3.000000   1.800000   -1.000000
2.000000   1.000000   38.000000  72.000000  36.000000  1.000000   1.000000   3.000000   1.000000   3.000000   0.000000   2.000000   2.000000   1.000000   0.000000   3.000000   5.000000   38.000000  6.800000   2.000000   2.000000   1.000000
2.000000   9.000000   38.000000  92.000000  28.000000  1.000000   1.000000   2.000000   1.000000   1.000000   3.000000   2.000000   3.000000   0.000000   7.200000   0.000000   0.000000   37.000000  6.100000   1.000000   1.100000   1.000000
1.000000   1.000000   38.300000  66.000000  30.000000  2.000000   3.000000   1.000000   1.000000   2.000000   4.000000   3.000000   3.000000   2.000000   8.500000   4.000000   5.000000   37.000000  6.000000   0.000000   0.000000   1.000000
2.000000   1.000000   37.500000  48.000000  24.000000  3.000000   1.000000   1.000000   1.000000   2.000000   1.000000   0.000000   1.000000   1.000000   0.000000   3.000000   2.000000   43.000000  6.000000   1.000000   2.800000   1.000000
1.000000   1.000000   37.500000  88.000000  20.000000  2.000000   3.000000   3.000000   1.000000   4.000000   3.000000   3.000000   0.000000   0.000000   0.000000   0.000000   0.000000   35.000000  6.400000   1.000000   0.000000   -1.000000
2.000000   9.000000   0.000000   150.000000 60.000000  4.000000   4.000000   4.000000   2.000000   5.000000   4.000000   4.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
1.000000   1.000000   39.700000  100.000000 30.000000  0.000000   0.000000   6.000000   2.000000   4.000000   4.000000   3.000000   1.000000   0.000000   0.000000   4.000000   5.000000   65.000000  75.000000  0.000000   0.000000   -1.000000
1.000000   1.000000   38.300000  80.000000  0.000000   3.000000   3.000000   4.000000   2.000000   5.000000   4.000000   3.000000   2.000000   1.000000   0.000000   4.000000   4.000000   45.000000  7.500000   2.000000   4.600000   1.000000
2.000000   1.000000   37.500000  40.000000  32.000000  3.000000   1.000000   3.000000   1.000000   3.000000   2.000000   3.000000   2.000000   1.000000   0.000000   0.000000   5.000000   32.000000  6.400000   1.000000   1.100000   1.000000
1.000000   1.000000   38.400000  84.000000  30.000000  3.000000   1.000000   5.000000   2.000000   4.000000   3.000000   3.000000   2.000000   3.000000   6.500000   4.000000   4.000000   47.000000  7.500000   3.000000   0.000000   -1.000000
1.000000   1.000000   38.100000  84.000000  44.000000  4.000000   0.000000   4.000000   2.000000   5.000000   3.000000   1.000000   1.000000   3.000000   5.000000   0.000000   4.000000   60.000000  6.800000   0.000000   5.700000   -1.000000
2.000000   1.000000   38.700000  52.000000  0.000000   1.000000   1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   0.000000   0.000000   0.000000   1.000000   3.000000   4.000000   74.000000  0.000000   0.000000   1.000000
2.000000   1.000000   38.100000  44.000000  40.000000  2.000000   1.000000   3.000000   1.000000   3.000000   3.000000   1.000000   0.000000   0.000000   0.000000   1.000000   3.000000   35.000000  6.800000   0.000000   0.000000   1.000000
2.000000   1.000000   38.400000  52.000000  20.000000  2.000000   1.000000   3.000000   1.000000   1.000000   3.000000   2.000000   2.000000   1.000000   0.000000   3.000000   5.000000   41.000000  63.000000  1.000000   1.000000   1.000000
1.000000   1.000000   38.200000  60.000000  0.000000   1.000000   0.000000   3.000000   1.000000   2.000000   1.000000   1.000000   1.000000   1.000000   0.000000   4.000000   4.000000   43.000000  6.200000   2.000000   3.900000   1.000000
2.000000   1.000000   37.700000  40.000000  18.000000  1.000000   1.000000   1.000000   0.000000   3.000000   2.000000   1.000000   1.000000   1.000000   0.000000   3.000000   3.000000   36.000000  3.500000   0.000000   0.000000   1.000000
1.000000   1.000000   39.100000  60.000000  10.000000  0.000000   1.000000   1.000000   0.000000   2.000000   3.000000   0.000000   0.000000   0.000000   0.000000   4.000000   4.000000   0.000000   0.000000   0.000000   0.000000   1.000000
2.000000   1.000000   37.800000  48.000000  16.000000  1.000000   1.000000   1.000000   1.000000   0.000000   1.000000   1.000000   2.000000   1.000000   0.000000   4.000000   3.000000   43.000000  7.500000   0.000000   0.000000   1.000000
1.000000   1.000000   39.000000  120.000000 0.000000   4.000000   3.000000   5.000000   2.000000   2.000000   4.000000   3.000000   2.000000   3.000000   8.000000   0.000000   0.000000   65.000000  8.200000   3.000000   4.600000   1.000000
1.000000   1.000000   38.200000  76.000000  0.000000   2.000000   3.000000   2.000000   1.000000   5.000000   3.000000   3.000000   1.000000   2.000000   6.000000   1.000000   5.000000   35.000000  6.500000   2.000000   0.900000   1.000000
2.000000   1.000000   38.300000  88.000000  0.000000   0.000000   0.000000   6.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   -1.000000
1.000000   1.000000   38.000000  80.000000  30.000000  3.000000   3.000000   3.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   6.000000   0.000000   0.000000   48.000000  8.300000   0.000000   4.300000   1.000000
1.000000   1.000000   0.000000   0.000000   0.000000   3.000000   1.000000   1.000000   1.000000   2.000000   3.000000   3.000000   1.000000   3.000000   6.000000   4.000000   4.000000   0.000000   0.000000   2.000000   0.000000   -1.000000
1.000000   1.000000   37.600000  40.000000  0.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   1.000000   0.000000   0.000000   0.000000   1.000000   1.000000   0.000000   0.000000   2.000000   2.100000   1.000000
2.000000   1.000000   37.500000  44.000000  0.000000   1.000000   1.000000   1.000000   1.000000   3.000000   3.000000   2.000000   0.000000   0.000000   0.000000   0.000000   0.000000   45.000000  5.800000   2.000000   1.400000   1.000000
2.000000   1.000000   38.200000  42.000000  16.000000  1.000000   1.000000   3.000000   1.000000   1.000000   3.000000   1.000000   0.000000   0.000000   0.000000   1.000000   0.000000   35.000000  60.000000  1.000000   1.000000   1.000000
2.000000   1.000000   38.000000  56.000000  44.000000  3.000000   3.000000   3.000000   0.000000   0.000000   1.000000   1.000000   2.000000   1.000000   0.000000   4.000000   0.000000   47.000000  70.000000  2.000000   1.000000   1.000000
2.000000   1.000000   38.300000  45.000000  20.000000  3.000000   3.000000   2.000000   2.000000   2.000000   4.000000   1.000000   2.000000   0.000000   0.000000   4.000000   0.000000   0.000000   0.000000   0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   48.000000  96.000000  1.000000   1.000000   3.000000   1.000000   0.000000   4.000000   1.000000   2.000000   1.000000   0.000000   1.000000   4.000000   42.000000  8.000000   1.000000   0.000000   1.000000
1.000000   1.000000   37.700000  55.000000  28.000000  2.000000   1.000000   2.000000   1.000000   2.000000   3.000000   3.000000   0.000000   3.000000   5.000000   4.000000   5.000000   0.000000   0.000000   0.000000   0.000000   1.000000
2.000000   1.000000   36.000000  100.000000 20.000000  4.000000   3.000000   6.000000   2.000000   2.000000   4.000000   3.000000   1.000000   1.000000   0.000000   4.000000   5.000000   74.000000  5.700000   2.000000   2.500000   -1.000000
1.000000   1.000000   37.100000  60.000000  20.000000  2.000000   0.000000   4.000000   1.000000   3.000000   0.000000   3.000000   0.000000   2.000000   5.000000   3.000000   4.000000   64.000000  8.500000   2.000000   0.000000   1.000000
2.000000   1.000000   37.100000  114.000000 40.000000  3.000000   0.000000   3.000000   2.000000   2.000000   2.000000   1.000000   0.000000   0.000000   0.000000   0.000000   3.000000   32.000000  0.000000   3.000000   6.500000   1.000000
1.000000   1.000000   38.100000  72.000000  30.000000  3.000000   3.000000   3.000000   1.000000   4.000000   4.000000   3.000000   2.000000   1.000000   0.000000   3.000000   5.000000   37.000000  56.000000  3.000000   1.000000   1.000000
1.000000   1.000000   37.000000  44.000000  12.000000  3.000000   1.000000   1.000000   2.000000   1.000000   1.000000   1.000000   0.000000   0.000000   0.000000   4.000000   2.000000   40.000000  6.700000   3.000000   8.000000   1.000000
1.000000   1.000000   38.600000  48.000000  20.000000  3.000000   1.000000   1.000000   1.000000   4.000000   3.000000   1.000000   0.000000   0.000000   0.000000   3.000000   0.000000   37.000000  75.000000  0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   82.000000  72.000000  3.000000   1.000000   4.000000   1.000000   2.000000   3.000000   3.000000   0.000000   3.000000   0.000000   4.000000   4.000000   53.000000  65.000000  3.000000   2.000000   -1.000000
1.000000   9.000000   38.200000  78.000000  60.000000  4.000000   4.000000   6.000000   0.000000   3.000000   3.000000   3.000000   0.000000   0.000000   0.000000   1.000000   0.000000   59.000000  5.800000   3.000000   3.100000   -1.000000
2.000000   1.000000   37.800000  60.000000  16.000000  1.000000   1.000000   3.000000   1.000000   2.000000   3.000000   2.000000   1.000000   2.000000   0.000000   3.000000   0.000000   41.000000  73.000000  0.000000   0.000000   -1.000000
1.000000   1.000000   38.700000  34.000000  30.000000  2.000000   0.000000   3.000000   1.000000   2.000000   3.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   33.000000  69.000000  0.000000   2.000000   -1.000000
1.000000   1.000000   0.000000   36.000000  12.000000  1.000000   1.000000   1.000000   1.000000   1.000000   2.000000   1.000000   1.000000   1.000000   0.000000   1.000000   5.000000   44.000000  0.000000   0.000000   0.000000   1.000000
2.000000   1.000000   38.300000  44.000000  60.000000  0.000000   0.000000   1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   6.400000   36.000000  0.000000   0.000000   1.000000
2.000000   1.000000   37.400000  54.000000  18.000000  3.000000   0.000000   1.000000   1.000000   3.000000   4.000000   3.000000   2.000000   2.000000   0.000000   4.000000   5.000000   30.000000  7.100000   2.000000   0.000000   1.000000
1.000000   1.000000   0.000000   0.000000   0.000000   4.000000   3.000000   0.000000   2.000000   2.000000   4.000000   1.000000   0.000000   0.000000   0.000000   0.000000   0.000000   54.000000  76.000000  3.000000   2.000000   1.000000
1.000000   1.000000   36.600000  48.000000  16.000000  3.000000   1.000000   3.000000   1.000000   4.000000   1.000000   1.000000   1.000000   1.000000   0.000000   0.000000   0.000000   27.000000  56.000000  0.000000   0.000000   -1.000000
1.000000   1.000000   38.500000  90.000000  0.000000   1.000000   1.000000   3.000000   1.000000   3.000000   3.000000   3.000000   2.000000   3.000000   2.000000   4.000000   5.000000   47.000000  79.000000  0.000000   0.000000   1.000000
1.000000   1.000000   0.000000   75.000000  12.000000  1.000000   1.000000   4.000000   1.000000   5.000000   3.000000   3.000000   0.000000   3.000000   5.800000   0.000000   0.000000   58.000000  8.500000   1.000000   0.000000   1.000000
2.000000   1.000000   38.200000  42.000000  0.000000   3.000000   1.000000   1.000000   1.000000   1.000000   1.000000   2.000000   2.000000   1.000000   0.000000   3.000000   2.000000   35.000000  5.900000   2.000000   0.000000   1.000000
1.000000   9.000000   38.200000  78.000000  60.000000  4.000000   4.000000   6.000000   0.000000   3.000000   3.000000   3.000000   0.000000   0.000000   0.000000   1.000000   0.000000   59.000000  5.800000   3.000000   3.100000   -1.000000
2.000000   1.000000   38.600000  60.000000  30.000000  1.000000   1.000000   3.000000   1.000000   4.000000   2.000000   2.000000   1.000000   1.000000   0.000000   0.000000   0.000000   40.000000  6.000000   1.000000   0.000000   1.000000
2.000000   1.000000   37.800000  42.000000  40.000000  1.000000   1.000000   1.000000   1.000000   1.000000   3.000000   1.000000   0.000000   0.000000   0.000000   3.000000   3.000000   36.000000  6.200000   0.000000   0.000000   1.000000
1.000000   1.000000   38.000000  60.000000  12.000000  1.000000   1.000000   2.000000   1.000000   2.000000   1.000000   1.000000   1.000000   1.000000   0.000000   1.000000   4.000000   44.000000  65.000000  3.000000   2.000000   -1.000000
2.000000   1.000000   38.000000  42.000000  12.000000  3.000000   0.000000   3.000000   1.000000   1.000000   1.000000   1.000000   0.000000   0.000000   0.000000   0.000000   1.000000   37.000000  5.800000   0.000000   0.000000   1.000000
2.000000   1.000000   37.600000  88.000000  36.000000  3.000000   1.000000   1.000000   1.000000   3.000000   3.000000   2.000000   1.000000   3.000000   1.500000   0.000000   0.000000   44.000000  6.000000   0.000000   0.000000   -1.000000
代碼:
from numpy import *

def loadSimpData():
    datMat = matrix([[ 1. ,  2.1],
        [ 2. ,  1.1],
        [ 1.3,  1. ],
        [ 1. ,  1. ],
        [ 2. ,  1. ]])
    classLabels = [1.0, 1.0, -1.0, -1.0, 1.0]
    return datMat,classLabels

def loadDataSet(filename):
    numfeat = len(open(filename).readline().split('\t'))
    datMat=[];labelMat=[]
    fr = open(filename)
    for line in fr.readlines():
        lineArr = []
        curline = line.strip().split('\t')
        for i in range(numfeat-1):
            lineArr.append(float(curline[i]))
        datMat.append(lineArr)
        labelMat.append(int(float(curline[-1])))
    return  datMat,labelMat

# 通過比較閾值進行分類
def stumpClassify(dataMatrix,dimen,threshVal,threshIneq):
    retArray = ones((shape(dataMatrix)[0],1))
    if threshIneq == 'lt':
        retArray[dataMatrix[:,dimen] <= threshVal] = -1.0    # 小於等於閾值賦值爲-1
    else:
        retArray[dataMatrix[:,dimen] > threshVal] = -1.0     # 大於閾值賦值爲-1
    return retArray

# 計算最小誤差及對應的分類結果和特徵值、閾值、分類方式
def buildStump(dataArr,classLabels,D):
    dataMatrix = mat(dataArr); labelMat = mat(classLabels).T
    m,n = shape(dataMatrix)
    numSteps = 100.0; bestStump = {}; bestClasEst = mat(zeros((m,1)))
    minError = inf                                # 錯誤率初始化爲正無窮大
    for i in range(n):                           # 遍歷所有特徵值
        rangeMin = dataMatrix[:,i].min(); rangeMax = dataMatrix[:,i].max()            # 找到特徵值中的最大值和最小值
        stepSize = (rangeMax-rangeMin)/20                                       # 計算步長
        for j in range(-1,int(numSteps)+1):                                          # 步長爲0.1,數據範圍根據取值的大小而定
            for inequal in ['lt', 'gt']:                                            # 計算大於或者小於的情況
                threshVal = (rangeMin + float(j) * stepSize)                          # 計算閾值
                predictedVals = stumpClassify(dataMatrix,i,threshVal,inequal)         # 獲得分類結果
                errArr = mat(ones((m,1)))
                errArr[predictedVals == labelMat] = 0                                 # 正確分類賦值爲0
                weightedError = D.T*errArr                                            # 計算誤差率
                # print ("split: dim %d, thresh %.2f, thresh ineqal: %s, the weighted error is %.3f" % (i, threshVal, inequal, weightedError))
                if weightedError < minError:                                          # 獲取最小分類誤差
                    minError = weightedError
                    bestClasEst = predictedVals.copy()
                    bestStump['dim'] = i
                    bestStump['thresh'] = threshVal
                    bestStump['ineq'] = inequal
    return bestStump,minError,bestClasEst

# 基於單層決策樹的adaBoost訓練
def adaBoostTrainDS(dataArr,classLabels,numIt=40):
    weakClassArr = []
    m = shape(dataArr)[0]
    D = mat(ones((m,1))/m)   # 第一步,設置初始權重
    aggClassEst = mat(zeros((m,1)))
    for i in range(numIt):
        bestStump,error,classEst = buildStump(dataArr,classLabels,D)  # 構建單層決策樹,第二步,計算誤差
        #print "D:",D.T
        print(max(error, 1e-16))
        alpha = float(0.5*log((1.0-error)/max(error,1e-16)))          # 第三步,計算權重,增加1e-16使分母不爲0
        bestStump['alpha'] = alpha                                   # 存儲權重
        weakClassArr.append(bestStump)                                # 存儲單層決策樹
        #print "classEst: ",classEst.T
        # 第四步,更新樣本權重
        expon = multiply(-1*alpha*mat(classLabels).T,classEst)        # 計算e的指數項,-αt*yt*ht(x)
        D = multiply(D,exp(expon))
        D = D/D.sum()
        # 計算AdaBoost誤差,當誤差爲0的時候,退出循環
        aggClassEst += alpha*classEst
        #print "aggClassEst: ",aggClassEst.T
        aggErrors = multiply(sign(aggClassEst) != mat(classLabels).T,ones((m,1)))      # 計算分類錯誤個數,0爲正確分類,1爲錯誤分類
        errorRate = aggErrors.sum()/m
        print ("total error: ",errorRate)
        if errorRate == 0.0: break                 # 誤差爲0,退出循環
    return weakClassArr,aggClassEst

# adaBoost分類
def adaClassify(datToClass,classifierArr):
    dataMatrix = mat(datToClass)#do stuff similar to last aggClassEst in adaBoostTrainDS
    m = shape(dataMatrix)[0]
    aggClassEst = mat(zeros((m,1)))
    for i in range(len(classifierArr)):
        classEst = stumpClassify(dataMatrix,classifierArr[i]['dim'],
                                 classifierArr[i]['thresh'],
                                 classifierArr[i]['ineq'])#call stump classify
        aggClassEst += classifierArr[i]['alpha']*classEst
        # print (aggClassEst)
    return sign(aggClassEst)

if __name__=='__main__':
    datMat, classLabels = loadDataSet('horseColicTraining2.txt')
    weakClassArr, aggClassEst = adaBoostTrainDS(datMat, classLabels,9)
    testArr,testLabelArr = loadDataSet('horseColicTest2.txt')
    prediction = adaClassify(testArr,weakClassArr)
    errorArr = mat(ones((67,1)))
    errorArr=multiply([prediction!= mat(testLabelArr).T],ones((67,1)))
    errorRate = errorArr.sum()/67
    print(errorRate)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章