在spark.ml中,实现了加速失效时间(AFT)模型,这是一个用于检查数据的参数生存回归模型。 它描述了生存时间对数的模型,因此它通常被称为生存分析的对数线性模型。 不同于为相同目的设计的比例风险模型,AFT模型更容易并行化,因为每个实例独立地贡献于目标函数。

  当在具有常量非零列的数据集上匹配AFTSurvivalRegressionModel而没有截距时,Spark MLlib为常量非零列输出零系数。 这种行为不同于R survival :: survreg。

导入包

  1. import org.apache.spark.sql.SparkSession
  2. import org.apache.spark.sql.Dataset
  3. import org.apache.spark.sql.Row
  4. import org.apache.spark.sql.DataFrame
  5. import org.apache.spark.sql.functions._
  6.  
  7. import org.apache.spark.ml.linalg.Vectors
  8. import org.apache.spark.ml.feature.VectorAssembler
  9. import org.apache.spark.ml.Pipeline
  10. import org.apache.spark.ml.evaluation.RegressionEvaluator
  11. import org.apache.spark.ml.regression.AFTSurvivalRegression
  12. import org.apache.spark.ml.tuning.{ CrossValidator, ParamGridBuilder }

导入样本数据

  1. val spark = SparkSession.builder().appName("Spark Survival regression").config("spark.some.config.option", "some-value").getOrCreate()
  2.  
  3. // For implicit conversions like converting RDDs to DataFrames
  4. import spark.implicits._
  5.  
  6. val dataList: List[(Double, Double, Double, Double,Double, Double, Double, Double,Double, Double)] = List(
  7. (16, 1, 1, 0, 0, 1, 24, 82, 14, 0),
  8. (1, 1, 1, 0, 1, 0, 26, 85, 12, 0),
  9. (4, 0, 1, 0, 0, 0, 25, 85, 12, 0),
  10. (3, 1, 1, 0, 1, 1, 21, 85, 9, 0),
  11. (36, 1, 1, 0, 1, 0, 22, 82, 12, 0),
  12. (36, 1, 1, 0, 0, 0, 18, 82, 11, 0),
  13. (16, 1, 1, 1, 1, 0, 20, 81, 9, 0),
  14. (8, 0, 1, 0, 1, 0, 24, 85, 12, 0),
  15. (20, 1, 1, 1, 0, 0, 24, 85, 12, 0),
  16. (44, 1, 1, 0, 0, 0, 24, 82, 14, 0),
  17. (20, 1, 1, 0, 1, 0, 26, 84, 12, 0),
  18. (30, 1, 1, 0, 1, 0, 22, 84, 12, 1),
  19. (24, 1, 1, 0, 0, 0, 19, 83, 12, 0),
  20. (13, 1, 1, 0, 0, 0, 22, 80, 14, 0),
  21. (6, 1, 1, 0, 0, 0, 27, 84, 16, 0),
  22. (2, 1, 1, 0, 0, 0, 22, 81, 12, 1),
  23. (5, 1, 1, 0, 0, 0, 26, 85, 13, 0),
  24. (192, 1, 1, 0, 0, 0, 21, 78, 12, 0),
  25. (4, 1, 1, 0, 0, 0, 20, 83, 12, 0),
  26. (12, 1, 1, 0, 1, 0, 22, 81, 12, 0),
  27. (4, 1, 2, 0, 0, 0, 24, 86, 12, 0),
  28. (16, 0, 2, 1, 1, 1, 21, 84, 12, 1),
  29. (24, 1, 1, 0, 0, 0, 27, 84, 14, 0),
  30. (16, 1, 1, 0, 1, 0, 23, 81, 12, 0),
  31. (3, 1, 1, 0, 0, 0, 26, 84, 14, 0),
  32. (16, 1, 1, 0, 1, 0, 24, 82, 14, 0),
  33. (28, 1, 1, 0, 0, 0, 23, 81, 12, 0),
  34. (1, 1, 1, 0, 1, 0, 19, 81, 12, 0),
  35. (13, 1, 1, 0, 0, 1, 23, 85, 14, 0),
  36. (36, 1, 1, 0, 0, 0, 21, 83, 10, 0),
  37. (32, 1, 1, 0, 1, 0, 20, 82, 12, 1),
  38. (16, 1, 1, 0, 1, 1, 21, 80, 12, 0),
  39. (2, 1, 1, 0, 0, 1, 21, 83, 12, 0),
  40. (8, 1, 1, 0, 0, 1, 24, 83, 14, 1),
  41. (1, 1, 1, 0, 0, 0, 22, 83, 10, 0),
  42. (24, 1, 2, 0, 0, 0, 18, 79, 11, 0),
  43. (64, 1, 1, 0, 1, 0, 20, 84, 12, 0),
  44. (8, 1, 1, 0, 0, 0, 23, 84, 10, 1),
  45. (2, 1, 1, 0, 0, 0, 16, 80, 9, 1),
  46. (12, 1, 1, 0, 0, 0, 22, 80, 13, 0),
  47. (18, 1, 1, 0, 0, 0, 24, 83, 12, 0),
  48. (32, 1, 1, 0, 0, 0, 24, 85, 14, 0),
  49. (2, 1, 1, 0, 0, 0, 19, 78, 12, 0),
  50. (7, 1, 1, 0, 0, 0, 26, 85, 16, 0),
  51. (5, 1, 1, 0, 0, 0, 22, 81, 12, 0),
  52. (44, 1, 1, 0, 0, 0, 22, 82, 16, 0),
  53. (2, 1, 1, 1, 1, 0, 21, 81, 12, 1),
  54. (4, 1, 1, 0, 1, 0, 18, 81, 10, 1),
  55. (2, 0, 1, 0, 0, 0, 21, 86, 12, 1),
  56. (6, 1, 1, 0, 0, 0, 25, 85, 16, 0),
  57. (4, 1, 1, 0, 0, 0, 22, 81, 12, 0),
  58. (36, 1, 1, 0, 0, 0, 24, 83, 12, 0),
  59. (12, 1, 1, 0, 0, 0, 22, 83, 13, 1),
  60. (24, 1, 1, 0, 0, 0, 20, 85, 12, 0),
  61. (42, 1, 1, 0, 0, 0, 25, 82, 16, 0),
  62. (16, 1, 1, 0, 1, 0, 21, 79, 13, 0),
  63. (44, 1, 1, 0, 0, 0, 25, 84, 12, 0),
  64. (44, 1, 1, 0, 0, 0, 26, 84, 16, 0),
  65. (10, 1, 1, 0, 0, 0, 22, 83, 12, 0),
  66. (4, 1, 1, 1, 0, 0, 20, 81, 11, 0),
  67. (12, 1, 1, 0, 1, 0, 26, 84, 12, 0),
  68. (28, 1, 1, 0, 0, 0, 22, 82, 12, 0),
  69. (24, 1, 1, 0, 0, 0, 18, 82, 11, 0),
  70. (6, 1, 1, 0, 1, 0, 19, 78, 11, 0),
  71. (28, 1, 1, 0, 0, 0, 21, 83, 12, 0),
  72. (12, 1, 1, 1, 1, 0, 21, 81, 12, 0),
  73. (34, 1, 1, 0, 0, 0, 24, 82, 12, 0),
  74. (2, 1, 1, 0, 0, 0, 21, 84, 13, 0),
  75. (48, 1, 1, 0, 0, 0, 21, 84, 14, 0),
  76. (16, 1, 1, 0, 0, 0, 20, 80, 12, 0),
  77. (26, 1, 1, 0, 0, 0, 26, 84, 12, 1),
  78. (6, 1, 1, 0, 1, 0, 24, 84, 14, 0),
  79. (2, 1, 3, 0, 0, 0, 22, 85, 12, 1),
  80. (24, 1, 1, 0, 0, 0, 24, 85, 12, 0),
  81. (6, 1, 1, 0, 0, 0, 23, 83, 12, 0),
  82. (16, 1, 1, 0, 1, 0, 28, 85, 16, 0),
  83. (16, 1, 1, 1, 0, 0, 20, 80, 12, 0),
  84. (8, 1, 1, 0, 1, 0, 21, 84, 12, 0),
  85. (28, 1, 1, 0, 0, 0, 23, 85, 14, 0),
  86. (7, 1, 1, 0, 0, 0, 24, 83, 15, 0),
  87. (5, 1, 1, 1, 1, 0, 19, 82, 8, 0),
  88. (18, 1, 1, 0, 1, 0, 22, 80, 12, 0),
  89. (4, 1, 1, 0, 1, 0, 19, 82, 12, 1),
  90. (18, 1, 1, 0, 0, 0, 19, 83, 12, 0),
  91. (6, 1, 2, 0, 0, 0, 19, 83, 12, 0),
  92. (1, 1, 1, 1, 1, 0, 20, 84, 8, 1),
  93. (10, 1, 1, 1, 1, 1, 17, 78, 8, 0),
  94. (1, 1, 1, 0, 1, 0, 23, 81, 13, 0),
  95. (1, 1, 1, 0, 0, 0, 17, 81, 11, 0),
  96. (12, 1, 3, 0, 0, 0, 22, 81, 12, 0),
  97. (12, 1, 3, 0, 0, 0, 23, 85, 14, 0),
  98. (40, 1, 1, 0, 0, 0, 25, 83, 12, 0),
  99. (12, 1, 1, 0, 1, 0, 22, 83, 12, 0),
  100. (14, 1, 1, 0, 1, 0, 17, 79, 11, 0),
  101. (52, 1, 1, 0, 1, 0, 21, 81, 12, 0),
  102. (5, 1, 1, 0, 1, 0, 16, 78, 10, 0),
  103. (3, 1, 1, 0, 1, 0, 19, 83, 12, 0),
  104. (28, 1, 1, 0, 0, 0, 19, 80, 10, 0),
  105. (16, 1, 1, 0, 1, 0, 20, 82, 12, 1),
  106. (8, 1, 1, 0, 0, 0, 25, 86, 16, 0),
  107. (4, 1, 1, 1, 1, 0, 20, 85, 10, 0),
  108. (13, 1, 1, 0, 0, 0, 25, 84, 12, 0),
  109. (20, 1, 1, 0, 1, 0, 18, 78, 10, 0),
  110. (12, 1, 1, 0, 0, 0, 21, 79, 12, 0),
  111. (4, 1, 1, 0, 0, 0, 22, 84, 12, 0),
  112. (52, 1, 1, 0, 1, 0, 20, 80, 12, 1),
  113. (23, 0, 1, 0, 0, 0, 27, 84, 12, 0),
  114. (16, 1, 3, 1, 0, 0, 17, 79, 9, 1),
  115. (4, 0, 1, 0, 1, 0, 23, 85, 13, 0),
  116. (6, 1, 1, 0, 0, 1, 26, 85, 12, 0),
  117. (4, 1, 1, 0, 0, 0, 22, 85, 12, 0),
  118. (1, 1, 1, 0, 0, 0, 25, 84, 13, 0),
  119. (16, 1, 1, 0, 0, 0, 18, 81, 12, 0),
  120. (18, 1, 2, 0, 1, 0, 20, 81, 14, 0),
  121. (3, 1, 1, 0, 0, 0, 23, 85, 12, 0),
  122. (16, 1, 1, 0, 0, 0, 24, 85, 14, 1),
  123. (96, 1, 1, 0, 0, 0, 21, 80, 13, 0),
  124. (24, 1, 3, 0, 0, 0, 19, 83, 9, 0),
  125. (48, 1, 2, 0, 1, 0, 18, 79, 12, 0),
  126. (4, 1, 1, 0, 0, 0, 19, 83, 11, 0),
  127. (2, 1, 3, 0, 0, 0, 18, 82, 12, 1),
  128. (16, 1, 1, 0, 1, 1, 19, 79, 11, 0),
  129. (28, 1, 1, 0, 0, 0, 19, 82, 12, 0),
  130. (1, 1, 1, 0, 0, 0, 23, 85, 12, 0),
  131. (52, 1, 1, 0, 0, 0, 23, 82, 14, 0),
  132. (32, 1, 2, 1, 0, 0, 20, 82, 14, 0),
  133. (20, 1, 3, 0, 0, 0, 20, 82, 12, 0),
  134. (12, 1, 3, 0, 0, 0, 20, 85, 12, 0),
  135. (8, 1, 3, 0, 0, 0, 17, 78, 11, 0),
  136. (36, 1, 1, 0, 0, 0, 24, 81, 16, 0),
  137. (8, 1, 1, 0, 0, 0, 24, 85, 12, 1),
  138. (24, 1, 1, 0, 0, 0, 20, 83, 11, 1),
  139. (36, 1, 1, 0, 0, 0, 24, 83, 16, 0),
  140. (16, 1, 1, 0, 0, 0, 24, 84, 12, 0),
  141. (3, 1, 1, 0, 1, 0, 22, 80, 12, 0),
  142. (32, 1, 1, 0, 0, 0, 22, 80, 15, 0),
  143. (16, 1, 1, 0, 0, 0, 22, 84, 12, 0),
  144. (48, 1, 1, 0, 0, 0, 23, 85, 16, 0),
  145. (1, 1, 1, 0, 0, 0, 21, 80, 12, 0),
  146. (36, 1, 1, 0, 1, 0, 25, 84, 12, 1),
  147. (30, 1, 1, 0, 0, 0, 24, 81, 12, 0),
  148. (2, 1, 1, 0, 0, 0, 19, 78, 12, 0),
  149. (52, 1, 1, 0, 0, 0, 20, 79, 13, 0),
  150. (36, 1, 1, 1, 0, 1, 21, 83, 13, 0),
  151. (28, 1, 1, 0, 0, 0, 23, 82, 12, 1),
  152. (48, 1, 1, 0, 0, 0, 21, 80, 16, 0),
  153. (16, 1, 3, 0, 1, 0, 19, 78, 7, 0),
  154. (4, 1, 1, 0, 0, 0, 25, 83, 12, 0),
  155. (1, 1, 1, 0, 0, 0, 25, 85, 12, 0),
  156. (6, 1, 1, 0, 0, 0, 20, 82, 12, 1),
  157. (12, 1, 1, 0, 0, 0, 20, 78, 12, 0),
  158. (24, 1, 1, 0, 1, 0, 19, 80, 11, 0),
  159. (40, 1, 1, 1, 0, 0, 22, 80, 10, 0),
  160. (8, 1, 1, 1, 0, 0, 26, 85, 19, 0),
  161. (4, 1, 1, 0, 1, 0, 22, 82, 12, 0),
  162. (20, 1, 2, 0, 0, 0, 23, 84, 12, 0),
  163. (6, 1, 2, 0, 0, 0, 19, 83, 12, 0),
  164. (12, 1, 1, 0, 0, 0, 21, 82, 12, 0),
  165. (8, 1, 1, 1, 0, 0, 23, 84, 16, 0),
  166. (3, 0, 1, 0, 0, 0, 28, 85, 16, 0),
  167. (12, 1, 1, 0, 0, 1, 25, 85, 16, 0),
  168. (16, 1, 1, 0, 0, 0, 19, 80, 12, 0),
  169. (20, 1, 1, 0, 1, 0, 19, 78, 8, 0),
  170. (12, 1, 2, 0, 1, 0, 18, 79, 12, 0),
  171. (16, 1, 3, 0, 0, 0, 20, 83, 12, 0),
  172. (17, 1, 1, 0, 1, 0, 25, 83, 11, 0),
  173. (60, 1, 3, 0, 0, 0, 19, 80, 11, 1),
  174. (12, 1, 3, 1, 0, 0, 19, 81, 10, 1),
  175. (4, 1, 1, 1, 0, 0, 17, 79, 10, 1),
  176. (16, 1, 1, 0, 0, 0, 21, 81, 14, 0),
  177. (3, 1, 1, 0, 1, 0, 21, 83, 12, 0),
  178. (3, 1, 1, 0, 1, 0, 25, 85, 12, 0),
  179. (16, 1, 1, 0, 0, 0, 19, 82, 12, 0),
  180. (24, 1, 1, 1, 0, 1, 19, 78, 12, 0),
  181. (21, 1, 1, 0, 1, 0, 19, 78, 12, 0),
  182. (32, 1, 1, 0, 0, 0, 20, 81, 12, 0),
  183. (8, 1, 1, 1, 1, 0, 26, 85, 11, 0),
  184. (6, 1, 1, 0, 0, 0, 23, 84, 12, 0),
  185. (16, 1, 1, 0, 1, 0, 17, 82, 11, 0),
  186. (12, 1, 1, 0, 1, 0, 24, 81, 12, 0),
  187. (16, 1, 1, 1, 0, 0, 18, 82, 12, 0),
  188. (16, 1, 1, 1, 1, 0, 28, 85, 12, 0),
  189. (8, 1, 1, 0, 0, 0, 26, 85, 16, 1),
  190. (20, 1, 1, 0, 1, 0, 21, 85, 12, 0),
  191. (40, 1, 1, 0, 0, 0, 22, 83, 12, 0),
  192. (12, 1, 1, 0, 0, 0, 22, 83, 12, 0),
  193. (36, 1, 1, 0, 0, 0, 25, 84, 16, 0),
  194. (18, 1, 1, 0, 0, 0, 20, 82, 13, 0),
  195. (48, 1, 1, 0, 0, 0, 20, 81, 12, 0),
  196. (7, 1, 1, 1, 1, 0, 18, 81, 10, 1),
  197. (1, 1, 1, 0, 0, 0, 25, 85, 12, 0),
  198. (24, 1, 1, 0, 0, 0, 21, 85, 12, 0),
  199. (12, 1, 3, 1, 0, 0, 17, 80, 9, 0),
  200. (36, 1, 3, 1, 0, 0, 17, 82, 8, 0),
  201. (3, 1, 3, 1, 0, 0, 18, 79, 10, 0),
  202. (1, 1, 3, 0, 0, 0, 23, 81, 6, 0),
  203. (5, 1, 3, 0, 0, 0, 20, 83, 10, 0),
  204. (24, 1, 3, 1, 0, 0, 19, 83, 11, 1),
  205. (21, 1, 1, 1, 0, 1, 19, 81, 12, 1),
  206. (1, 1, 1, 0, 1, 0, 17, 78, 11, 0),
  207. (8, 1, 1, 0, 0, 0, 21, 79, 12, 0),
  208. (24, 1, 2, 0, 0, 0, 24, 84, 16, 0),
  209. (68, 1, 1, 1, 0, 0, 20, 80, 12, 0),
  210. (20, 1, 1, 0, 0, 0, 19, 80, 14, 0),
  211. (2, 1, 1, 0, 1, 0, 16, 80, 9, 0),
  212. (12, 1, 1, 0, 0, 0, 25, 84, 12, 0),
  213. (40, 1, 1, 0, 0, 1, 24, 82, 14, 0),
  214. (4, 1, 1, 0, 0, 0, 26, 84, 12, 0),
  215. (1, 1, 1, 0, 0, 1, 25, 85, 12, 0),
  216. (32, 1, 1, 0, 1, 0, 25, 84, 11, 1),
  217. (1, 1, 3, 0, 0, 0, 19, 80, 10, 0),
  218. (6, 1, 1, 0, 0, 0, 24, 81, 16, 0),
  219. (13, 1, 1, 0, 0, 1, 27, 85, 16, 0),
  220. (2, 1, 1, 1, 1, 0, 22, 85, 12, 0),
  221. (50, 1, 2, 0, 0, 0, 19, 83, 11, 1),
  222. (32, 1, 1, 0, 1, 0, 21, 78, 12, 0),
  223. (12, 1, 1, 0, 1, 0, 16, 79, 9, 0),
  224. (2, 1, 2, 0, 0, 0, 22, 79, 12, 0),
  225. (8, 1, 2, 0, 0, 0, 23, 82, 12, 1),
  226. (20, 1, 2, 0, 0, 0, 21, 83, 15, 0),
  227. (12, 1, 1, 0, 0, 0, 26, 85, 12, 0),
  228. (8, 1, 1, 0, 0, 0, 21, 85, 12, 0),
  229. (1, 1, 1, 0, 0, 0, 24, 83, 13, 0),
  230. (16, 1, 1, 0, 1, 0, 21, 83, 11, 0),
  231. (24, 1, 1, 0, 0, 0, 17, 80, 11, 0),
  232. (4, 1, 1, 0, 0, 0, 24, 85, 13, 0),
  233. (22, 1, 2, 0, 0, 0, 25, 83, 12, 0),
  234. (5, 1, 2, 0, 0, 0, 20, 82, 12, 0),
  235. (36, 1, 2, 1, 0, 0, 23, 84, 12, 0),
  236. (12, 1, 1, 0, 0, 0, 23, 80, 12, 0),
  237. (52, 1, 1, 0, 0, 0, 19, 79, 13, 0),
  238. (9, 1, 1, 0, 0, 0, 25, 85, 16, 0),
  239. (6, 1, 1, 0, 0, 0, 22, 85, 14, 0),
  240. (26, 1, 1, 0, 0, 0, 21, 81, 13, 0),
  241. (8, 1, 1, 0, 0, 0, 26, 84, 16, 0),
  242. (18, 0, 1, 1, 0, 0, 23, 84, 14, 0),
  243. (2, 1, 3, 0, 0, 0, 27, 85, 19, 0),
  244. (20, 1, 1, 0, 0, 0, 23, 82, 16, 0),
  245. (16, 1, 1, 0, 0, 0, 25, 85, 14, 1),
  246. (2, 0, 1, 0, 0, 0, 22, 86, 12, 0),
  247. (48, 1, 1, 0, 0, 1, 20, 80, 12, 1),
  248. (4, 1, 1, 0, 1, 0, 23, 83, 11, 0),
  249. (8, 1, 1, 0, 0, 0, 22, 80, 12, 0),
  250. (40, 1, 1, 0, 1, 0, 19, 81, 12, 1),
  251. (14, 0, 1, 0, 0, 0, 27, 85, 19, 0),
  252. (80, 1, 1, 0, 0, 0, 25, 83, 16, 0),
  253. (13, 0, 1, 0, 0, 0, 24, 85, 16, 0),
  254. (20, 1, 1, 0, 1, 0, 26, 84, 16, 1),
  255. (44, 1, 1, 0, 0, 0, 18, 78, 12, 0),
  256. (12, 1, 1, 0, 0, 0, 20, 84, 13, 0),
  257. (20, 1, 1, 0, 0, 0, 22, 79, 14, 0),
  258. (32, 1, 1, 0, 0, 0, 24, 84, 12, 1),
  259. (2, 1, 1, 0, 0, 0, 23, 83, 12, 0),
  260. (28, 1, 2, 0, 0, 0, 22, 85, 14, 1),
  261. (6, 1, 2, 0, 0, 0, 21, 84, 12, 0),
  262. (6, 1, 1, 0, 1, 0, 26, 83, 12, 0),
  263. (38, 1, 1, 0, 0, 0, 22, 81, 12, 0),
  264. (16, 1, 1, 0, 1, 0, 21, 80, 14, 0),
  265. (1, 1, 1, 0, 0, 0, 26, 85, 12, 0),
  266. (7, 1, 1, 0, 0, 0, 26, 84, 12, 0),
  267. (10, 1, 1, 0, 1, 0, 23, 83, 12, 0),
  268. (3, 1, 1, 0, 0, 0, 23, 82, 16, 0),
  269. (36, 1, 1, 0, 0, 0, 21, 83, 12, 0),
  270. (12, 1, 1, 0, 0, 0, 20, 85, 12, 0),
  271. (8, 1, 2, 1, 0, 0, 19, 81, 11, 1),
  272. (14, 1, 1, 0, 0, 0, 22, 81, 12, 0),
  273. (4, 1, 1, 0, 1, 1, 20, 79, 11, 1),
  274. (1, 1, 1, 0, 1, 0, 22, 83, 12, 0),
  275. (2, 1, 1, 0, 0, 0, 24, 85, 13, 1),
  276. (1, 1, 1, 0, 1, 1, 21, 83, 12, 0),
  277. (4, 1, 1, 0, 0, 0, 24, 85, 12, 0),
  278. (24, 1, 1, 1, 0, 0, 22, 79, 14, 0),
  279. (12, 1, 1, 0, 0, 0, 23, 80, 15, 0),
  280. (12, 1, 1, 0, 1, 0, 21, 79, 12, 0),
  281. (20, 1, 1, 0, 0, 0, 26, 84, 12, 0),
  282. (7, 1, 1, 0, 0, 0, 21, 84, 12, 0),
  283. (12, 1, 1, 0, 1, 0, 17, 80, 10, 0),
  284. (8, 1, 1, 0, 1, 0, 16, 78, 9, 0),
  285. (6, 1, 1, 0, 1, 0, 19, 81, 11, 0),
  286. (16, 1, 1, 0, 0, 1, 23, 84, 15, 0),
  287. (48, 1, 1, 0, 0, 0, 20, 79, 13, 0),
  288. (2, 1, 1, 0, 0, 0, 22, 85, 12, 0),
  289. (1, 1, 1, 0, 0, 0, 22, 84, 12, 0),
  290. (16, 1, 1, 1, 1, 0, 18, 80, 11, 1),
  291. (8, 1, 1, 0, 0, 0, 21, 85, 14, 0),
  292. (24, 1, 1, 0, 0, 0, 23, 83, 15, 0),
  293. (4, 1, 1, 0, 0, 0, 20, 80, 12, 0),
  294. (2, 1, 2, 0, 0, 0, 23, 83, 12, 0),
  295. (5, 0, 1, 0, 0, 0, 27, 85, 16, 0),
  296. (24, 1, 2, 1, 0, 0, 20, 79, 12, 0),
  297. (1, 1, 2, 1, 0, 0, 18, 82, 11, 0),
  298. (12, 1, 1, 0, 0, 0, 21, 78, 13, 0),
  299. (10, 1, 1, 1, 0, 0, 19, 81, 12, 0),
  300. (48, 1, 1, 0, 0, 0, 21, 81, 11, 0),
  301. (24, 1, 1, 0, 0, 0, 21, 84, 13, 0),
  302. (56, 1, 1, 0, 0, 0, 25, 83, 13, 0),
  303. (52, 1, 1, 0, 0, 0, 21, 79, 12, 0),
  304. (6, 1, 1, 0, 1, 0, 19, 79, 10, 0),
  305. (32, 1, 1, 1, 0, 0, 17, 81, 10, 0),
  306. (8, 1, 1, 0, 1, 0, 22, 84, 12, 1),
  307. (6, 1, 1, 0, 0, 0, 17, 81, 10, 0),
  308. (24, 1, 1, 1, 1, 0, 18, 81, 11, 0),
  309. (2, 1, 3, 0, 0, 0, 19, 79, 12, 0),
  310. (20, 1, 3, 0, 0, 0, 23, 84, 12, 0),
  311. (40, 1, 2, 1, 1, 0, 23, 80, 12, 0),
  312. (4, 1, 2, 0, 0, 0, 20, 82, 12, 1),
  313. (3, 0, 1, 0, 1, 0, 24, 86, 11, 1),
  314. (24, 1, 1, 0, 1, 0, 19, 78, 9, 1),
  315. (8, 1, 1, 0, 0, 0, 20, 84, 12, 0),
  316. (24, 1, 1, 0, 0, 0, 21, 82, 12, 0),
  317. (36, 1, 1, 0, 0, 0, 19, 83, 12, 0),
  318. (1, 1, 1, 0, 1, 0, 21, 80, 12, 1),
  319. (8, 1, 1, 0, 0, 0, 19, 78, 12, 0),
  320. (8, 1, 1, 0, 1, 0, 23, 81, 12, 0),
  321. (40, 1, 1, 0, 0, 0, 20, 84, 12, 0),
  322. (5, 1, 1, 0, 0, 0, 16, 79, 9, 1),
  323. (24, 1, 1, 0, 0, 0, 23, 85, 16, 0),
  324. (2, 1, 3, 0, 0, 0, 21, 83, 12, 0),
  325. (6, 0, 1, 0, 0, 0, 26, 85, 12, 0),
  326. (24, 1, 1, 0, 0, 0, 22, 80, 14, 0),
  327. (42, 1, 1, 0, 1, 0, 21, 84, 11, 0),
  328. (12, 1, 1, 0, 0, 0, 16, 79, 10, 0),
  329. (48, 1, 2, 0, 0, 0, 19, 80, 12, 0),
  330. (12, 1, 1, 0, 0, 1, 20, 83, 10, 0),
  331. (7, 1, 3, 0, 0, 0, 23, 81, 12, 1),
  332. (10, 1, 1, 0, 1, 0, 24, 84, 12, 0),
  333. (1, 1, 1, 0, 0, 0, 21, 78, 12, 0),
  334. (2, 1, 1, 0, 0, 0, 23, 85, 12, 1),
  335. (3, 1, 1, 0, 0, 0, 21, 85, 12, 0),
  336. (6, 1, 1, 0, 1, 0, 19, 80, 11, 0),
  337. (40, 1, 1, 0, 1, 0, 20, 79, 12, 0),
  338. (38, 1, 1, 0, 0, 0, 22, 80, 12, 0),
  339. (1, 1, 1, 0, 0, 0, 18, 79, 11, 0),
  340. (2, 1, 1, 0, 1, 0, 19, 81, 10, 1),
  341. (8, 1, 1, 0, 1, 0, 21, 85, 11, 1),
  342. (20, 1, 1, 0, 0, 0, 17, 79, 10, 0),
  343. (2, 1, 1, 0, 0, 0, 20, 83, 11, 0),
  344. (2, 1, 1, 0, 0, 0, 20, 84, 11, 0),
  345. (3, 1, 1, 0, 0, 0, 26, 83, 12, 0),
  346. (13, 0, 1, 1, 0, 0, 27, 85, 13, 1),
  347. (20, 1, 1, 0, 0, 0, 21, 78, 12, 0),
  348. (3, 1, 3, 0, 1, 0, 18, 82, 11, 0),
  349. (10, 1, 1, 0, 0, 0, 23, 84, 13, 0),
  350. (2, 1, 1, 0, 1, 0, 22, 85, 12, 1),
  351. (24, 1, 1, 0, 0, 0, 19, 82, 12, 0),
  352. (2, 1, 1, 1, 0, 0, 23, 83, 12, 1),
  353. (10, 1, 1, 0, 1, 0, 21, 81, 12, 1),
  354. (28, 1, 1, 0, 1, 0, 16, 78, 9, 1),
  355. (7, 1, 1, 0, 0, 1, 21, 80, 12, 0),
  356. (2, 1, 1, 0, 0, 0, 26, 83, 13, 0),
  357. (1, 1, 1, 0, 0, 0, 25, 84, 12, 0),
  358. (40, 1, 1, 0, 0, 0, 21, 84, 12, 0),
  359. (104, 1, 1, 1, 1, 1, 20, 83, 12, 0),
  360. (1, 1, 1, 0, 1, 0, 18, 78, 11, 1),
  361. (16, 1, 1, 0, 0, 0, 18, 79, 10, 0),
  362. (7, 0, 1, 0, 0, 0, 22, 85, 12, 1),
  363. (40, 1, 1, 0, 0, 0, 23, 84, 12, 0),
  364. (8, 1, 1, 1, 0, 0, 20, 79, 12, 0),
  365. (2, 1, 1, 0, 1, 0, 18, 78, 12, 0),
  366. (3, 1, 1, 0, 0, 0, 19, 79, 12, 0),
  367. (1, 1, 1, 0, 0, 0, 26, 83, 12, 0),
  368. (14, 1, 1, 0, 1, 0, 21, 79, 11, 0),
  369. (2, 1, 1, 0, 0, 0, 20, 81, 12, 0),
  370. (15, 1, 1, 0, 0, 0, 24, 83, 12, 1),
  371. (6, 1, 1, 0, 0, 0, 19, 81, 12, 0),
  372. (8, 1, 1, 0, 1, 0, 22, 85, 12, 0),
  373. (1, 1, 1, 0, 0, 0, 21, 81, 13, 0),
  374. (7, 1, 1, 0, 0, 0, 25, 84, 16, 0),
  375. (24, 1, 1, 0, 0, 0, 24, 85, 14, 0),
  376. (3, 1, 1, 0, 1, 0, 21, 82, 12, 0),
  377. (12, 1, 1, 1, 0, 0, 19, 82, 12, 1),
  378. (2, 1, 1, 0, 0, 0, 19, 79, 11, 0),
  379. (10, 1, 1, 0, 1, 0, 23, 86, 12, 0),
  380. (26, 1, 1, 0, 1, 0, 21, 85, 13, 0),
  381. (7, 1, 1, 0, 0, 0, 22, 83, 12, 0),
  382. (1, 1, 1, 1, 1, 0, 20, 81, 8, 0),
  383. (2, 1, 3, 1, 0, 0, 19, 82, 11, 1),
  384. (32, 1, 3, 0, 0, 1, 23, 85, 15, 0),
  385. (20, 1, 1, 0, 0, 0, 25, 82, 16, 0),
  386. (6, 1, 1, 0, 0, 1, 21, 80, 13, 0),
  387. (1, 1, 1, 0, 1, 0, 20, 81, 9, 0),
  388. (4, 1, 1, 0, 0, 0, 25, 84, 14, 0),
  389. (10, 1, 1, 0, 0, 0, 21, 85, 15, 0),
  390. (6, 1, 1, 0, 0, 0, 18, 79, 9, 0),
  391. (24, 1, 1, 0, 0, 0, 21, 84, 13, 1),
  392. (24, 1, 1, 0, 0, 0, 20, 82, 13, 0),
  393. (24, 1, 1, 0, 0, 0, 24, 81, 16, 0),
  394. (6, 1, 1, 0, 0, 0, 19, 81, 12, 0),
  395. (7, 1, 1, 0, 0, 0, 26, 84, 12, 0),
  396. (2, 1, 1, 0, 0, 0, 22, 82, 12, 0),
  397. (32, 1, 1, 0, 0, 0, 21, 78, 14, 0),
  398. (1, 1, 1, 1, 0, 0, 20, 83, 12, 1),
  399. (6, 1, 1, 0, 1, 0, 22, 82, 12, 0),
  400. (2, 1, 1, 0, 1, 0, 21, 79, 12, 0),
  401. (8, 1, 1, 0, 0, 0, 22, 81, 12, 0),
  402. (24, 1, 1, 0, 0, 0, 20, 83, 12, 1),
  403. (12, 1, 1, 0, 0, 0, 25, 85, 12, 1),
  404. (18, 0, 1, 0, 1, 0, 21, 84, 12, 0),
  405. (10, 1, 1, 0, 1, 0, 20, 85, 12, 0),
  406. (12, 1, 1, 0, 1, 0, 22, 85, 10, 0),
  407. (3, 1, 1, 0, 1, 0, 20, 82, 12, 0),
  408. (40, 1, 1, 0, 0, 0, 26, 83, 12, 0),
  409. (72, 1, 1, 1, 0, 0, 23, 80, 15, 0),
  410. (8, 1, 1, 0, 1, 0, 21, 79, 12, 0),
  411. (60, 1, 1, 0, 0, 0, 23, 81, 13, 0),
  412. (48, 1, 1, 1, 1, 0, 19, 83, 8, 1),
  413. (2, 1, 1, 0, 0, 0, 15, 78, 10, 0),
  414. (20, 1, 1, 0, 0, 0, 21, 84, 12, 0),
  415. (60, 1, 1, 0, 0, 0, 19, 78, 12, 0),
  416. (2, 1, 1, 0, 0, 0, 22, 83, 12, 0),
  417. (2, 1, 1, 0, 0, 0, 23, 80, 12, 0),
  418. (44, 1, 1, 1, 1, 0, 25, 82, 10, 1),
  419. (12, 1, 1, 0, 1, 0, 22, 81, 12, 0),
  420. (1, 1, 1, 0, 0, 0, 27, 85, 12, 0),
  421. (6, 1, 1, 0, 0, 0, 26, 84, 16, 0),
  422. (24, 1, 1, 0, 0, 0, 22, 80, 15, 0),
  423. (8, 1, 1, 1, 1, 0, 22, 85, 12, 0),
  424. (10, 1, 1, 0, 0, 0, 22, 85, 12, 1),
  425. (8, 1, 1, 0, 0, 0, 22, 84, 12, 0),
  426. (44, 1, 1, 0, 0, 0, 23, 84, 14, 0),
  427. (8, 1, 1, 1, 1, 0, 21, 85, 12, 0),
  428. (32, 1, 1, 0, 1, 0, 21, 79, 13, 0),
  429. (15, 1, 1, 0, 0, 0, 25, 85, 12, 1),
  430. (5, 1, 1, 0, 1, 0, 24, 84, 12, 0),
  431. (12, 1, 1, 1, 1, 0, 20, 83, 12, 0),
  432. (8, 1, 1, 0, 0, 0, 23, 85, 16, 0),
  433. (40, 1, 1, 0, 1, 1, 24, 83, 13, 1),
  434. (24, 1, 1, 0, 0, 0, 20, 82, 13, 0),
  435. (1, 0, 1, 0, 0, 1, 26, 86, 16, 1),
  436. (6, 1, 1, 1, 0, 0, 21, 85, 14, 0),
  437. (6, 1, 1, 0, 0, 0, 20, 85, 13, 1),
  438. (8, 1, 1, 0, 0, 0, 18, 79, 12, 0),
  439. (16, 1, 1, 0, 0, 0, 24, 82, 15, 0),
  440. (2, 1, 1, 0, 0, 0, 16, 79, 9, 0),
  441. (32, 1, 1, 0, 0, 0, 20, 81, 12, 1),
  442. (1, 1, 1, 0, 1, 0, 24, 85, 12, 0),
  443. (2, 1, 1, 0, 0, 0, 20, 80, 13, 0),
  444. (1, 1, 2, 1, 0, 0, 22, 85, 13, 0),
  445. (6, 1, 1, 0, 1, 0, 17, 80, 9, 0),
  446. (1, 1, 1, 0, 0, 0, 19, 79, 12, 0),
  447. (1, 1, 1, 1, 0, 0, 19, 82, 9, 0),
  448. (8, 1, 1, 0, 1, 0, 23, 84, 12, 0),
  449. (1, 1, 1, 0, 1, 0, 23, 82, 13, 0),
  450. (28, 1, 3, 0, 0, 0, 23, 81, 16, 0),
  451. (1, 1, 1, 0, 1, 0, 24, 82, 12, 0),
  452. (8, 1, 1, 0, 0, 0, 24, 84, 16, 0),
  453. (28, 1, 1, 0, 0, 0, 22, 82, 14, 0),
  454. (12, 1, 2, 0, 0, 0, 16, 80, 9, 0),
  455. (4, 1, 2, 0, 0, 1, 17, 80, 10, 1),
  456. (6, 1, 2, 0, 0, 0, 17, 82, 11, 0),
  457. (52, 1, 1, 0, 0, 0, 20, 80, 13, 0),
  458. (7, 0, 1, 0, 1, 0, 27, 85, 14, 0),
  459. (52, 1, 1, 0, 1, 0, 24, 82, 12, 0),
  460. (28, 1, 1, 0, 1, 0, 17, 81, 10, 1),
  461. (2, 1, 1, 0, 0, 0, 19, 81, 12, 1),
  462. (4, 1, 1, 0, 0, 0, 19, 82, 11, 0),
  463. (52, 1, 1, 0, 0, 0, 26, 84, 14, 0),
  464. (3, 1, 1, 0, 0, 0, 21, 81, 12, 0),
  465. (10, 1, 1, 0, 1, 1, 22, 82, 12, 0),
  466. (4, 1, 1, 1, 1, 1, 21, 81, 12, 1),
  467. (16, 1, 1, 0, 1, 0, 16, 80, 10, 0),
  468. (20, 1, 3, 0, 0, 0, 18, 78, 11, 0),
  469. (9, 0, 3, 0, 0, 0, 27, 85, 13, 0),
  470. (12, 1, 3, 0, 0, 0, 18, 79, 10, 0),
  471. (6, 0, 1, 0, 0, 0, 21, 85, 12, 0),
  472. (2, 1, 3, 0, 0, 0, 22, 84, 12, 0),
  473. (8, 1, 1, 1, 1, 1, 20, 80, 12, 1),
  474. (48, 1, 3, 0, 0, 0, 22, 82, 13, 0),
  475. (12, 1, 3, 0, 0, 0, 23, 82, 12, 0),
  476. (1, 1, 3, 0, 0, 0, 24, 82, 12, 0),
  477. (8, 1, 3, 1, 0, 0, 25, 85, 15, 1),
  478. (8, 1, 3, 0, 0, 0, 26, 83, 14, 0),
  479. (4, 1, 3, 0, 1, 0, 21, 80, 13, 0),
  480. (48, 1, 3, 1, 0, 0, 19, 82, 12, 0),
  481. (3, 1, 3, 0, 1, 0, 20, 80, 12, 0),
  482. (32, 1, 3, 0, 1, 0, 18, 79, 11, 1),
  483. (28, 1, 3, 0, 0, 0, 19, 81, 12, 0),
  484. (24, 1, 3, 0, 0, 0, 20, 84, 8, 0),
  485. (8, 1, 3, 0, 0, 0, 21, 83, 12, 0),
  486. (40, 1, 2, 0, 0, 0, 20, 81, 12, 0),
  487. (4, 1, 2, 1, 0, 0, 19, 83, 12, 1),
  488. (48, 1, 2, 0, 0, 0, 20, 84, 12, 0),
  489. (15, 1, 2, 1, 0, 0, 17, 81, 10, 1),
  490. (48, 1, 2, 0, 0, 0, 17, 80, 10, 0),
  491. (1, 1, 1, 1, 0, 0, 20, 81, 12, 0),
  492. (6, 1, 2, 1, 0, 0, 18, 82, 11, 0),
  493. (8, 1, 2, 0, 0, 0, 21, 81, 13, 0),
  494. (24, 1, 2, 0, 0, 0, 21, 78, 12, 0),
  495. (56, 1, 2, 0, 0, 0, 23, 84, 12, 1),
  496. (6, 0, 2, 0, 0, 0, 26, 85, 14, 0),
  497. (1, 1, 2, 0, 0, 0, 20, 84, 13, 0),
  498. (24, 1, 2, 0, 1, 0, 19, 78, 12, 0),
  499. (4, 1, 2, 0, 0, 0, 24, 82, 12, 0),
  500. (1, 1, 2, 0, 0, 0, 24, 82, 14, 0),
  501. (4, 0, 2, 0, 0, 0, 26, 85, 13, 0),
  502. (16, 1, 2, 1, 0, 0, 19, 81, 12, 1),
  503. (4, 1, 2, 0, 0, 0, 25, 86, 14, 1),
  504. (24, 1, 2, 0, 0, 0, 20, 84, 13, 0),
  505. (3, 1, 2, 1, 0, 0, 19, 82, 11, 0),
  506. (2, 1, 2, 0, 0, 0, 22, 84, 15, 0),
  507. (28, 1, 2, 0, 0, 0, 20, 81, 13, 1),
  508. (10, 1, 1, 0, 0, 0, 25, 83, 16, 0),
  509. (24, 1, 1, 0, 0, 0, 18, 80, 11, 0),
  510. (16, 1, 1, 0, 1, 1, 22, 81, 16, 0),
  511. (36, 1, 1, 0, 0, 0, 24, 81, 17, 0),
  512. (5, 1, 1, 0, 0, 0, 27, 84, 16, 0),
  513. (6, 1, 1, 0, 0, 0, 26, 84, 17, 0),
  514. (48, 1, 1, 0, 0, 0, 25, 83, 15, 0),
  515. (48, 1, 1, 0, 1, 0, 21, 83, 12, 0),
  516. (12, 1, 1, 0, 1, 0, 19, 79, 12, 0),
  517. (4, 1, 3, 1, 0, 0, 18, 79, 11, 1),
  518. (18, 1, 2, 0, 0, 0, 20, 80, 13, 0),
  519. (1, 1, 2, 1, 1, 1, 18, 83, 12, 0),
  520. (50, 1, 3, 1, 0, 0, 19, 82, 12, 1),
  521. (20, 1, 1, 0, 0, 0, 23, 83, 8, 0),
  522. (12, 1, 1, 0, 0, 0, 19, 83, 11, 1),
  523. (12, 1, 2, 1, 0, 0, 23, 81, 12, 0),
  524. (96, 1, 3, 1, 0, 0, 19, 79, 8, 0),
  525. (12, 1, 3, 0, 0, 0, 23, 82, 13, 0),
  526. (12, 1, 3, 0, 0, 0, 24, 82, 16, 0),
  527. (2, 1, 1, 1, 1, 1, 22, 83, 10, 0),
  528. (1, 1, 1, 0, 1, 0, 23, 81, 12, 0),
  529. (1, 1, 2, 0, 1, 0, 21, 85, 12, 0),
  530. (28, 1, 2, 0, 0, 0, 20, 79, 12, 1),
  531. (4, 1, 1, 0, 1, 1, 23, 83, 12, 0),
  532. (22, 1, 1, 1, 1, 0, 20, 81, 13, 0),
  533. (2, 1, 1, 0, 0, 0, 17, 78, 10, 0),
  534. (4, 1, 1, 0, 0, 0, 18, 80, 11, 0),
  535. (1, 1, 1, 1, 1, 0, 21, 84, 12, 1),
  536. (6, 0, 2, 0, 0, 0, 28, 85, 18, 0),
  537. (1, 1, 2, 0, 0, 0, 21, 81, 14, 1),
  538. (8, 1, 2, 0, 1, 0, 20, 83, 12, 1),
  539. (48, 1, 2, 1, 0, 0, 21, 81, 11, 0),
  540. (24, 1, 2, 1, 0, 0, 26, 84, 15, 0),
  541. (8, 1, 2, 0, 0, 0, 22, 83, 12, 0),
  542. (4, 1, 2, 1, 1, 0, 17, 78, 10, 0),
  543. (20, 1, 2, 1, 1, 1, 18, 80, 11, 0),
  544. (4, 1, 1, 1, 0, 0, 20, 80, 10, 0),
  545. (11, 1, 1, 0, 0, 0, 26, 85, 16, 0),
  546. (15, 1, 1, 1, 1, 0, 19, 78, 10, 1),
  547. (16, 1, 1, 0, 0, 0, 23, 82, 14, 0),
  548. (1, 1, 1, 0, 0, 0, 20, 79, 7, 1),
  549. (24, 1, 2, 0, 0, 0, 25, 82, 12, 1),
  550. (15, 1, 2, 0, 0, 0, 20, 83, 13, 0),
  551. (6, 1, 2, 0, 0, 0, 22, 81, 13, 0),
  552. (1, 1, 1, 0, 1, 0, 19, 82, 12, 0),
  553. (32, 1, 1, 0, 1, 0, 24, 83, 12, 0),
  554. (2, 1, 3, 0, 0, 0, 26, 85, 15, 0),
  555. (3, 1, 2, 0, 0, 0, 19, 81, 12, 0),
  556. (16, 1, 1, 0, 0, 0, 20, 83, 12, 0),
  557. (6, 1, 2, 0, 0, 0, 19, 81, 12, 0),
  558. (3, 1, 1, 0, 0, 0, 21, 79, 13, 0),
  559. (42, 1, 1, 0, 0, 0, 23, 80, 15, 0),
  560. (3, 1, 1, 0, 1, 0, 20, 83, 12, 0),
  561. (32, 1, 1, 0, 0, 0, 25, 84, 16, 1),
  562. (8, 1, 1, 1, 1, 0, 15, 79, 7, 1),
  563. (4, 1, 2, 0, 0, 0, 23, 84, 13, 1),
  564. (3, 1, 2, 1, 1, 0, 18, 83, 10, 0),
  565. (7, 0, 1, 0, 0, 0, 26, 85, 16, 0),
  566. (4, 1, 1, 0, 1, 0, 25, 83, 17, 0),
  567. (6, 1, 1, 0, 1, 0, 26, 85, 16, 0),
  568. (20, 1, 1, 0, 0, 0, 27, 85, 17, 0),
  569. (18, 1, 3, 0, 1, 0, 21, 82, 12, 0),
  570. (3, 1, 1, 0, 1, 0, 25, 83, 14, 0),
  571. (16, 1, 2, 0, 0, 0, 24, 83, 16, 0),
  572. (26, 1, 1, 0, 0, 0, 25, 84, 16, 0),
  573. (1, 0, 1, 0, 0, 0, 28, 86, 16, 0),
  574. (20, 1, 1, 0, 0, 0, 27, 85, 18, 0),
  575. (12, 1, 1, 0, 1, 0, 15, 79, 8, 1),
  576. (16, 1, 3, 1, 0, 0, 23, 83, 6, 0),
  577. (32, 1, 1, 0, 0, 0, 22, 81, 12, 0),
  578. (60, 1, 1, 0, 0, 0, 21, 79, 12, 0),
  579. (24, 1, 1, 0, 0, 0, 24, 84, 16, 0),
  580. (7, 1, 1, 1, 1, 0, 17, 80, 9, 1),
  581. (1, 1, 2, 0, 0, 0, 23, 86, 13, 1),
  582. (16, 1, 1, 1, 0, 0, 17, 78, 10, 0),
  583. (48, 1, 1, 0, 0, 0, 20, 79, 12, 1),
  584. (12, 1, 1, 0, 0, 0, 20, 79, 13, 0),
  585. (4, 1, 3, 1, 0, 0, 25, 85, 13, 1),
  586. (8, 1, 3, 1, 0, 0, 18, 82, 10, 0),
  587. (4, 1, 3, 1, 0, 0, 18, 82, 11, 1),
  588. (4, 1, 3, 0, 0, 0, 18, 80, 12, 0),
  589. (18, 1, 3, 0, 1, 1, 20, 83, 10, 0),
  590. (48, 1, 3, 0, 0, 0, 24, 82, 12, 0),
  591. (24, 1, 2, 1, 0, 0, 21, 79, 14, 0),
  592. (8, 1, 3, 0, 0, 0, 22, 82, 12, 0),
  593. (52, 1, 3, 0, 0, 0, 19, 82, 12, 0),
  594. (1, 1, 1, 0, 1, 0, 19, 83, 10, 0),
  595. (12, 1, 2, 0, 0, 1, 23, 81, 16, 0),
  596. (4, 1, 3, 0, 0, 0, 20, 79, 14, 1),
  597. (12, 1, 3, 0, 0, 0, 19, 81, 12, 0),
  598. (8, 1, 3, 0, 0, 0, 17, 81, 10, 1),
  599. (2, 1, 1, 0, 0, 0, 21, 83, 14, 0),
  600. (96, 1, 1, 1, 1, 0, 18, 78, 10, 1),
  601. (8, 1, 3, 0, 0, 0, 19, 84, 12, 0),
  602. (8, 1, 2, 0, 0, 1, 22, 83, 13, 0),
  603. (40, 1, 1, 1, 0, 0, 22, 79, 12, 0),
  604. (10, 1, 3, 0, 0, 0, 21, 82, 12, 0),
  605. (12, 1, 3, 0, 0, 0, 19, 78, 12, 0),
  606. (12, 1, 3, 0, 0, 0, 22, 83, 14, 0),
  607. (9, 1, 3, 1, 0, 0, 27, 84, 18, 1),
  608. (6, 1, 2, 0, 0, 0, 22, 82, 13, 0),
  609. (16, 1, 1, 0, 1, 0, 28, 85, 12, 0),
  610. (1, 1, 3, 0, 0, 0, 25, 83, 11, 0),
  611. (6, 1, 3, 1, 0, 0, 21, 84, 12, 0),
  612. (4, 1, 3, 0, 0, 0, 18, 81, 10, 1),
  613. (2, 1, 3, 0, 0, 0, 19, 79, 11, 0),
  614. (4, 1, 3, 0, 0, 0, 20, 80, 11, 0),
  615. (8, 1, 1, 0, 1, 0, 27, 85, 11, 1),
  616. (6, 1, 1, 0, 0, 0, 25, 82, 16, 0),
  617. (40, 1, 1, 0, 0, 0, 23, 81, 11, 0),
  618. (24, 1, 3, 0, 0, 0, 22, 81, 16, 0),
  619. (1, 1, 3, 0, 0, 0, 24, 82, 13, 0),
  620. (5, 1, 3, 0, 0, 0, 20, 79, 12, 0),
  621. (2, 1, 3, 0, 0, 0, 22, 79, 13, 0),
  622. (8, 1, 3, 0, 1, 0, 24, 81, 12, 0),
  623. (4, 1, 3, 0, 0, 0, 21, 85, 13, 0),
  624. (12, 1, 3, 0, 0, 0, 22, 79, 3, 0),
  625. (12, 1, 3, 1, 0, 0, 18, 79, 6, 0),
  626. (3, 1, 3, 1, 1, 0, 16, 78, 7, 0),
  627. (48, 1, 1, 0, 0, 0, 23, 82, 14, 0),
  628. (8, 1, 3, 1, 0, 0, 16, 79, 8, 0),
  629. (14, 1, 1, 0, 1, 0, 23, 83, 11, 1),
  630. (9, 1, 3, 1, 0, 0, 21, 85, 12, 0),
  631. (4, 1, 1, 0, 1, 0, 24, 83, 12, 0),
  632. (14, 1, 3, 0, 0, 0, 26, 85, 14, 0),
  633. (3, 1, 3, 0, 0, 0, 19, 83, 10, 1),
  634. (3, 1, 3, 0, 0, 0, 20, 78, 11, 0),
  635. (6, 1, 3, 0, 0, 0, 23, 85, 12, 0),
  636. (12, 1, 1, 0, 0, 1, 22, 83, 12, 0),
  637. (8, 0, 1, 0, 1, 0, 25, 85, 12, 0),
  638. (3, 1, 3, 0, 0, 0, 24, 81, 12, 1),
  639. (3, 1, 3, 0, 0, 0, 19, 83, 12, 0),
  640. (10, 1, 3, 0, 0, 0, 22, 80, 12, 0),
  641. (3, 1, 3, 1, 1, 0, 19, 81, 11, 1),
  642. (44, 1, 3, 0, 0, 0, 25, 83, 16, 0),
  643. (2, 1, 1, 0, 0, 0, 22, 84, 13, 0),
  644. (1, 1, 1, 1, 0, 0, 16, 80, 8, 0),
  645. (1, 1, 2, 1, 0, 0, 23, 83, 12, 0),
  646. (12, 1, 2, 0, 0, 0, 23, 82, 14, 0),
  647. (4, 1, 2, 1, 0, 0, 19, 82, 12, 0),
  648. (16, 1, 2, 0, 1, 0, 18, 79, 11, 0),
  649. (5, 0, 1, 0, 0, 0, 22, 85, 12, 0),
  650. (24, 1, 1, 0, 0, 0, 20, 81, 9, 0),
  651. (6, 0, 1, 0, 0, 0, 28, 85, 14, 0),
  652. (52, 1, 1, 1, 0, 0, 20, 78, 12, 0),
  653. (2, 1, 3, 1, 0, 0, 15, 80, 8, 1),
  654. (2, 1, 1, 0, 1, 1, 25, 84, 13, 0),
  655. (10, 1, 1, 0, 0, 0, 24, 84, 12, 0),
  656. (48, 1, 1, 0, 0, 0, 23, 81, 12, 1),
  657. (52, 1, 1, 0, 0, 0, 20, 81, 12, 0),
  658. (2, 1, 1, 0, 0, 0, 25, 85, 14, 1),
  659. (24, 1, 1, 0, 1, 0, 19, 80, 9, 1),
  660. (12, 1, 1, 1, 1, 0, 21, 82, 10, 0),
  661. (8, 1, 2, 0, 0, 0, 16, 78, 11, 0),
  662. (4, 1, 1, 1, 0, 1, 24, 84, 12, 0),
  663. (4, 1, 1, 0, 0, 0, 19, 78, 12, 1),
  664. (4, 1, 1, 1, 0, 0, 16, 78, 9, 0),
  665. (8, 1, 1, 0, 0, 0, 20, 80, 12, 0),
  666. (48, 1, 2, 0, 0, 1, 24, 81, 14, 1),
  667. (24, 1, 1, 0, 0, 1, 27, 84, 18, 1),
  668. (3, 1, 1, 0, 1, 0, 26, 84, 16, 1),
  669. (20, 1, 1, 0, 1, 0, 25, 84, 15, 0),
  670. (52, 1, 1, 0, 1, 0, 25, 82, 16, 0),
  671. (60, 1, 1, 0, 1, 0, 24, 84, 14, 0),
  672. (2, 1, 1, 0, 0, 0, 21, 79, 13, 0),
  673. (2, 1, 3, 0, 0, 0, 22, 84, 14, 0),
  674. (5, 1, 3, 1, 0, 0, 20, 81, 12, 0),
  675. (12, 1, 3, 1, 0, 0, 17, 80, 8, 0),
  676. (24, 1, 3, 0, 0, 0, 27, 84, 10, 0),
  677. (12, 1, 3, 0, 0, 0, 19, 81, 12, 0),
  678. (4, 1, 3, 0, 0, 0, 23, 85, 13, 0),
  679. (2, 1, 3, 0, 0, 0, 16, 79, 10, 0),
  680. (6, 1, 3, 0, 0, 0, 24, 85, 13, 0),
  681. (1, 1, 1, 0, 0, 0, 22, 81, 15, 0),
  682. (4, 1, 3, 0, 0, 0, 17, 80, 10, 0),
  683. (2, 1, 1, 0, 1, 1, 19, 82, 8, 0),
  684. (48, 1, 2, 0, 0, 0, 21, 83, 12, 1),
  685. (8, 1, 2, 1, 0, 0, 20, 79, 9, 1),
  686. (24, 1, 1, 0, 0, 0, 20, 81, 12, 0),
  687. (12, 1, 2, 0, 0, 0, 26, 85, 14, 0),
  688. (2, 1, 1, 1, 1, 0, 22, 82, 12, 1),
  689. (3, 1, 1, 0, 1, 0, 21, 84, 9, 0),
  690. (96, 1, 1, 1, 0, 0, 19, 80, 8, 0),
  691. (3, 1, 1, 1, 0, 0, 19, 83, 10, 0),
  692. (16, 1, 2, 0, 1, 0, 23, 82, 16, 0),
  693. (6, 1, 1, 0, 1, 1, 21, 84, 12, 0),
  694. (4, 1, 1, 1, 0, 0, 19, 79, 10, 0),
  695. (56, 1, 2, 1, 0, 0, 17, 80, 11, 0),
  696. (4, 1, 2, 0, 0, 0, 20, 84, 12, 0),
  697. (6, 1, 1, 1, 0, 0, 19, 81, 10, 1),
  698. (2, 1, 2, 1, 0, 0, 21, 81, 14, 0),
  699. (8, 1, 1, 0, 0, 0, 21, 84, 14, 0),
  700. (14, 1, 2, 0, 0, 0, 22, 82, 13, 0),
  701. (8, 1, 3, 0, 0, 0, 19, 83, 10, 0),
  702. (1, 1, 3, 0, 0, 0, 24, 85, 9, 0),
  703. (2, 1, 3, 0, 0, 0, 19, 83, 11, 1),
  704. (16, 0, 1, 0, 0, 1, 27, 84, 16, 1),
  705. (8, 1, 1, 0, 0, 0, 26, 84, 16, 0),
  706. (48, 1, 1, 1, 1, 1, 18, 80, 8, 0),
  707. (52, 1, 1, 1, 1, 0, 17, 81, 7, 0),
  708. (25, 1, 1, 1, 1, 0, 21, 82, 11, 0),
  709. (20, 1, 1, 1, 1, 0, 22, 83, 12, 0),
  710. (12, 1, 1, 1, 1, 0, 19, 81, 11, 1),
  711. (8, 1, 3, 0, 0, 0, 23, 83, 14, 0),
  712. (5, 1, 3, 1, 1, 1, 20, 81, 10, 1),
  713. (4, 1, 1, 0, 1, 1, 25, 84, 16, 0),
  714. (16, 1, 1, 0, 0, 0, 25, 84, 16, 0),
  715. (1, 1, 1, 0, 0, 0, 22, 81, 15, 0),
  716. (5, 1, 1, 0, 1, 0, 26, 85, 16, 0),
  717. (3, 1, 1, 1, 1, 0, 19, 83, 11, 0),
  718. (46, 1, 1, 1, 1, 0, 20, 78, 12, 0),
  719. (8, 1, 3, 1, 0, 0, 18, 78, 12, 0),
  720. (40, 1, 1, 0, 0, 0, 18, 80, 10, 0),
  721. (1, 1, 3, 1, 1, 1, 22, 82, 12, 0),
  722. (4, 1, 2, 0, 0, 1, 24, 86, 13, 0),
  723. (3, 1, 1, 0, 1, 0, 22, 81, 12, 0),
  724. (2, 1, 3, 0, 0, 1, 25, 84, 12, 0),
  725. (2, 1, 1, 0, 0, 0, 27, 85, 15, 0),
  726. (3, 1, 1, 0, 0, 0, 22, 80, 16, 0),
  727. (46, 1, 1, 0, 0, 0, 25, 83, 14, 0),
  728. (2, 1, 3, 0, 0, 0, 19, 81, 12, 1),
  729. (36, 1, 1, 0, 0, 0, 21, 82, 12, 0),
  730. (6, 0, 3, 0, 0, 0, 22, 85, 12, 0),
  731. (8, 1, 1, 0, 0, 0, 18, 81, 11, 0),
  732. (16, 1, 1, 0, 0, 0, 19, 79, 12, 0),
  733. (16, 1, 1, 1, 1, 0, 19, 78, 9, 0),
  734. (12, 1, 3, 1, 0, 0, 23, 80, 9, 1),
  735. (6, 1, 2, 1, 0, 0, 20, 83, 13, 0),
  736. (5, 0, 3, 0, 0, 0, 21, 85, 14, 0),
  737. (16, 1, 3, 1, 1, 0, 19, 84, 11, 0),
  738. (12, 1, 3, 0, 0, 0, 19, 81, 12, 0),
  739. (1, 1, 3, 0, 0, 0, 26, 85, 11, 0),
  740. (4, 1, 1, 1, 1, 0, 21, 78, 12, 0),
  741. (24, 1, 1, 1, 0, 0, 19, 78, 11, 0),
  742. (1, 1, 1, 0, 0, 0, 22, 80, 12, 0),
  743. (10, 1, 3, 0, 1, 1, 22, 81, 13, 0),
  744. (10, 1, 1, 0, 0, 0, 25, 85, 13, 0),
  745. (2, 1, 3, 1, 0, 0, 20, 84, 12, 1),
  746. (2, 1, 3, 0, 1, 1, 24, 84, 12, 0),
  747. (64, 1, 3, 1, 0, 0, 21, 80, 11, 0),
  748. (8, 1, 2, 1, 0, 0, 21, 84, 12, 0),
  749. (48, 1, 2, 1, 1, 0, 21, 81, 12, 0),
  750. (28, 1, 3, 0, 0, 0, 21, 80, 11, 1),
  751. (24, 1, 3, 0, 0, 0, 18, 79, 10, 0),
  752. (18, 1, 2, 1, 0, 0, 23, 82, 11, 0),
  753. (6, 1, 3, 0, 0, 0, 21, 85, 12, 0),
  754. (3, 1, 2, 1, 1, 0, 19, 82, 11, 1),
  755. (56, 1, 3, 0, 0, 0, 26, 84, 15, 1),
  756. (18, 1, 1, 0, 0, 0, 24, 83, 13, 0),
  757. (2, 1, 3, 0, 0, 0, 21, 81, 9, 0),
  758. (6, 1, 3, 0, 0, 0, 20, 79, 6, 1),
  759. (12, 1, 3, 0, 0, 0, 24, 82, 14, 0),
  760. (32, 1, 1, 0, 1, 0, 19, 82, 9, 0),
  761. (3, 1, 3, 0, 0, 0, 21, 83, 12, 1),
  762. (72, 1, 1, 0, 0, 0, 19, 83, 11, 0),
  763. (5, 1, 1, 1, 1, 0, 19, 84, 7, 0),
  764. (12, 1, 2, 0, 0, 0, 20, 80, 13, 1),
  765. (8, 1, 3, 0, 0, 0, 23, 82, 12, 0),
  766. (8, 1, 1, 0, 1, 0, 23, 81, 13, 0),
  767. (16, 1, 1, 0, 1, 0, 21, 78, 14, 0),
  768. (2, 0, 1, 0, 0, 0, 26, 85, 13, 0),
  769. (3, 0, 1, 0, 0, 0, 27, 85, 16, 0),
  770. (12, 1, 2, 1, 0, 0, 17, 79, 10, 0),
  771. (40, 1, 2, 1, 0, 0, 18, 81, 12, 0),
  772. (96, 1, 1, 0, 0, 0, 25, 83, 14, 0),
  773. (4, 1, 1, 0, 1, 1, 22, 81, 12, 0),
  774. (3, 1, 1, 0, 1, 0, 20, 84, 12, 1),
  775. (12, 1, 1, 0, 0, 0, 25, 83, 16, 0),
  776. (28, 1, 1, 0, 1, 0, 25, 83, 16, 0),
  777. (7, 1, 1, 1, 1, 1, 22, 84, 11, 0),
  778. (1, 1, 2, 1, 0, 0, 22, 85, 15, 0),
  779. (1, 1, 1, 0, 1, 0, 23, 83, 14, 0),
  780. (4, 1, 3, 0, 0, 0, 26, 83, 9, 0),
  781. (3, 1, 3, 0, 0, 0, 25, 84, 14, 1),
  782. (12, 1, 3, 1, 0, 0, 24, 84, 12, 0),
  783. (1, 1, 2, 0, 0, 0, 19, 83, 12, 0),
  784. (14, 1, 1, 0, 0, 1, 26, 84, 15, 0),
  785. (12, 1, 1, 0, 0, 0, 20, 79, 12, 0),
  786. (8, 1, 2, 1, 0, 0, 19, 81, 12, 0),
  787. (12, 1, 3, 0, 0, 0, 25, 82, 12, 0),
  788. (1, 1, 3, 0, 0, 0, 22, 85, 11, 0),
  789. (8, 1, 1, 1, 0, 0, 17, 81, 10, 0),
  790. (8, 1, 1, 1, 1, 0, 24, 85, 9, 1),
  791. (8, 1, 1, 1, 1, 0, 15, 80, 9, 0),
  792. (7, 1, 3, 0, 1, 0, 23, 84, 13, 0),
  793. (12, 1, 3, 0, 0, 0, 21, 82, 12, 0),
  794. (6, 1, 3, 0, 0, 0, 24, 84, 12, 0),
  795. (2, 1, 2, 0, 0, 0, 23, 85, 14, 0),
  796. (16, 1, 3, 1, 0, 0, 20, 81, 11, 1),
  797. (24, 1, 1, 0, 0, 0, 18, 80, 9, 1),
  798. (24, 1, 3, 0, 0, 0, 20, 79, 10, 0),
  799. (12, 1, 3, 0, 1, 1, 24, 83, 9, 0),
  800. (72, 1, 1, 1, 0, 0, 16, 81, 9, 1),
  801. (6, 1, 1, 0, 1, 0, 23, 83, 12, 0),
  802. (1, 1, 2, 0, 0, 0, 25, 82, 13, 0),
  803. (48, 1, 1, 0, 0, 0, 20, 80, 12, 0),
  804. (3, 1, 1, 0, 1, 0, 22, 83, 12, 0),
  805. (24, 1, 1, 0, 0, 0, 23, 81, 12, 0),
  806. (12, 1, 1, 0, 0, 0, 23, 82, 12, 0),
  807. (26, 1, 1, 0, 0, 0, 22, 80, 12, 0),
  808. (3, 1, 1, 0, 1, 0, 23, 83, 12, 0),
  809. (24, 1, 1, 0, 0, 0, 20, 80, 12, 0),
  810. (1, 1, 1, 0, 0, 1, 20, 78, 12, 0),
  811. (5, 1, 1, 0, 1, 0, 24, 83, 12, 0),
  812. (2, 1, 1, 0, 1, 0, 21, 79, 12, 0),
  813. (12, 1, 1, 0, 0, 0, 19, 80, 12, 0),
  814. (48, 1, 1, 0, 0, 0, 23, 81, 12, 0),
  815. (3, 1, 2, 0, 1, 1, 23, 81, 13, 0),
  816. (4, 1, 1, 0, 1, 0, 22, 81, 12, 0),
  817. (6, 1, 1, 0, 1, 0, 22, 81, 12, 0),
  818. (4, 1, 1, 0, 1, 1, 24, 82, 13, 0),
  819. (52, 1, 1, 1, 0, 0, 22, 81, 12, 0),
  820. (8, 1, 2, 1, 0, 0, 23, 81, 12, 0),
  821. (20, 1, 1, 1, 0, 0, 21, 81, 12, 0),
  822. (20, 1, 1, 0, 0, 0, 23, 82, 12, 0),
  823. (28, 1, 1, 0, 0, 0, 22, 83, 12, 0),
  824. (4, 1, 1, 0, 0, 0, 24, 82, 12, 1),
  825. (16, 1, 1, 1, 0, 0, 19, 78, 12, 0),
  826. (8, 1, 2, 0, 0, 0, 19, 79, 12, 0),
  827. (5, 1, 1, 0, 0, 0, 21, 80, 12, 0),
  828. (11, 1, 1, 0, 1, 0, 24, 83, 12, 0),
  829. (4, 1, 2, 0, 0, 0, 24, 83, 12, 0),
  830. (3, 1, 1, 0, 0, 0, 22, 81, 12, 0),
  831. (2, 1, 1, 0, 0, 0, 23, 81, 12, 0),
  832. (2, 1, 1, 0, 0, 0, 21, 80, 12, 0),
  833. (6, 1, 1, 0, 0, 0, 21, 80, 13, 0),
  834. (8, 1, 1, 1, 1, 0, 21, 79, 12, 0),
  835. (1, 1, 1, 0, 1, 1, 18, 79, 12, 1),
  836. (48, 1, 1, 0, 1, 0, 19, 79, 12, 0),
  837. (32, 1, 1, 0, 0, 0, 20, 79, 13, 0),
  838. (32, 1, 1, 0, 0, 1, 20, 79, 12, 0),
  839. (6, 1, 1, 0, 1, 0, 22, 81, 12, 0),
  840. (6, 1, 1, 0, 0, 0, 25, 82, 12, 0),
  841. (24, 1, 1, 0, 0, 1, 20, 79, 12, 0),
  842. (4, 1, 3, 0, 0, 0, 20, 79, 14, 0),
  843. (16, 1, 1, 0, 0, 0, 22, 82, 12, 0),
  844. (12, 1, 1, 0, 0, 0, 21, 80, 12, 0),
  845. (2, 1, 1, 0, 1, 0, 24, 83, 12, 0),
  846. (1, 1, 1, 0, 0, 0, 21, 81, 12, 0),
  847. (3, 1, 1, 0, 1, 0, 22, 82, 12, 0),
  848. (7, 1, 1, 1, 1, 1, 25, 83, 12, 0),
  849. (56, 1, 1, 0, 0, 0, 24, 81, 12, 0),
  850. (1, 1, 1, 0, 0, 0, 22, 80, 12, 0),
  851. (24, 1, 1, 0, 0, 0, 21, 81, 12, 0),
  852. (16, 1, 1, 0, 1, 0, 19, 78, 12, 0),
  853. (20, 1, 1, 0, 1, 0, 22, 82, 12, 0),
  854. (1, 1, 1, 0, 0, 0, 22, 81, 13, 0),
  855. (120, 1, 3, 0, 0, 0, 22, 80, 12, 0),
  856. (44, 1, 1, 0, 0, 0, 22, 81, 14, 0),
  857. (3, 1, 1, 0, 0, 0, 25, 83, 12, 0),
  858. (32, 1, 1, 0, 0, 0, 20, 80, 12, 0),
  859. (6, 1, 1, 0, 0, 0, 22, 82, 12, 0),
  860. (52, 1, 1, 0, 0, 0, 22, 79, 12, 0),
  861. (24, 1, 2, 0, 0, 1, 23, 81, 12, 0),
  862. (72, 1, 1, 0, 0, 0, 21, 81, 12, 0),
  863. (24, 1, 2, 0, 0, 0, 21, 81, 12, 0),
  864. (3, 1, 1, 0, 1, 0, 22, 82, 10, 0),
  865. (6, 1, 1, 0, 1, 0, 21, 79, 12, 0),
  866. (24, 1, 1, 0, 1, 0, 24, 82, 12, 0),
  867. (16, 1, 2, 0, 0, 0, 23, 83, 12, 0),
  868. (5, 1, 1, 0, 1, 0, 25, 83, 12, 0),
  869. (48, 1, 1, 0, 0, 0, 20, 79, 12, 0),
  870. (10, 1, 1, 0, 1, 0, 23, 82, 12, 0),
  871. (48, 1, 1, 0, 0, 0, 23, 82, 13, 0),
  872. (2, 1, 1, 1, 1, 0, 24, 82, 12, 0),
  873. (6, 1, 1, 0, 0, 0, 24, 82, 14, 0),
  874. (36, 1, 2, 0, 0, 0, 22, 82, 14, 0),
  875. (12, 1, 1, 0, 0, 0, 22, 83, 12, 0),
  876. (2, 1, 1, 0, 1, 0, 21, 85, 12, 0),
  877. (4, 1, 1, 0, 1, 0, 18, 80, 12, 1),
  878. (24, 1, 1, 0, 0, 0, 23, 82, 13, 0),
  879. (1, 1, 1, 0, 0, 0, 23, 83, 11, 0),
  880. (20, 1, 1, 0, 0, 0, 21, 81, 13, 0),
  881. (76, 1, 1, 0, 0, 0, 21, 83, 14, 0),
  882. (8, 1, 1, 0, 0, 0, 20, 79, 12, 0),
  883. (4, 1, 3, 0, 0, 0, 24, 81, 11, 0),
  884. (36, 1, 1, 0, 1, 0, 20, 80, 12, 0),
  885. (6, 1, 1, 0, 0, 0, 21, 82, 12, 0),
  886. (32, 1, 1, 0, 0, 0, 19, 83, 14, 0),
  887. (4, 1, 1, 0, 0, 0, 20, 81, 12, 0),
  888. (4, 1, 1, 0, 1, 0, 21, 79, 12, 0),
  889. (40, 1, 1, 1, 1, 0, 22, 85, 12, 0),
  890. (3, 1, 3, 0, 0, 0, 20, 81, 9, 0),
  891. (8, 1, 1, 1, 0, 1, 23, 83, 10, 1),
  892. (32, 1, 1, 0, 0, 0, 18, 80, 11, 0),
  893. (10, 0, 1, 0, 0, 0, 28, 85, 15, 1),
  894. (1, 1, 1, 0, 0, 0, 20, 84, 12, 1),
  895. (1, 1, 1, 0, 1, 0, 20, 80, 12, 0),
  896. (5, 1, 1, 1, 1, 1, 21, 78, 15, 0),
  897. (24, 1, 1, 0, 1, 0, 18, 81, 10, 0),
  898. (48, 1, 1, 0, 0, 0, 23, 83, 12, 0),
  899. (12, 1, 1, 0, 1, 0, 24, 83, 12, 0),
  900. (20, 1, 1, 0, 0, 0, 27, 85, 17, 0),
  901. (4, 1, 1, 0, 1, 0, 21, 84, 12, 0),
  902. (16, 1, 1, 1, 1, 0, 21, 82, 12, 0),
  903. (32, 1, 3, 1, 0, 0, 18, 82, 10, 1),
  904. (24, 1, 1, 0, 0, 0, 26, 85, 14, 1),
  905. (13, 1, 1, 0, 0, 0, 21, 82, 12, 0),
  906. (1, 1, 1, 1, 0, 0, 16, 81, 9, 1),
  907. (16, 1, 1, 0, 1, 0, 20, 81, 12, 0),
  908. (44, 1, 1, 0, 0, 0, 21, 80, 12, 0),
  909. (32, 1, 1, 0, 1, 1, 22, 83, 12, 0),
  910. (1, 1, 1, 0, 1, 1, 20, 83, 12, 0),
  911. (8, 1, 1, 0, 1, 0, 22, 79, 12, 0),
  912. (6, 1, 1, 0, 0, 0, 22, 82, 13, 1),
  913. (6, 1, 1, 1, 1, 0, 21, 81, 12, 0),
  914. (32, 1, 1, 0, 0, 1, 25, 84, 18, 0),
  915. (28, 1, 1, 0, 1, 1, 19, 80, 12, 0),
  916. (7, 1, 1, 0, 0, 1, 24, 83, 14, 0),
  917. (12, 1, 1, 1, 1, 1, 20, 80, 10, 1),
  918. (4, 1, 1, 1, 0, 0, 18, 81, 11, 0),
  919. (32, 1, 1, 0, 0, 0, 23, 81, 16, 0),
  920. (48, 1, 1, 1, 0, 0, 20, 84, 11, 1),
  921. (32, 1, 1, 1, 0, 0, 17, 78, 12, 1),
  922. (3, 1, 2, 0, 1, 0, 19, 79, 11, 1),
  923. (4, 1, 2, 0, 0, 0, 21, 78, 12, 0),
  924. (4, 1, 1, 0, 1, 0, 23, 82, 12, 0),
  925. (2, 1, 1, 0, 0, 0, 24, 82, 13, 0),
  926. (3, 1, 1, 0, 0, 1, 21, 80, 12, 0),
  927. (1, 1, 1, 0, 1, 1, 20, 81, 12, 0),
  928. (32, 1, 1, 0, 1, 0, 24, 81, 12, 0),
  929. (24, 1, 1, 0, 0, 0, 20, 80, 12, 0),
  930. (4, 1, 1, 0, 0, 0, 20, 79, 12, 0),
  931. (5, 1, 1, 0, 0, 1, 22, 81, 12, 0),
  932. (24, 1, 2, 0, 0, 0, 21, 80, 12, 0),
  933. (6, 1, 1, 0, 1, 0, 20, 80, 12, 0))
  934.  
  935. val data = dataList.toDF("label", "censor","race","poverty","smoke","alcohol","agemth","ybirth","yschool","pc3mth").orderBy("label")

建模并调优

val colArray = Array("race", "poverty", "smoke", "alcohol", "agemth", "ybirth", "yschool", "pc3mth")

val assembler = new VectorAssembler().setInputCols(colArray).setOutputCol("features")

val vecDF: DataFrame = assembler.transform(data)

val Array(trainingDF, testDF) = vecDF.randomSplit(Array(0.7, 0.3))

//###########################
// 建立生存回归模型
val AFT = new AFTSurvivalRegression().setFeaturesCol("features").setLabelCol("label").setCensorCol("censor").fit(trainingDF) // 设置管道
val pipeline = new Pipeline().setStages(Array(AFT)) // 设置参数网格
val paramGrid = new ParamGridBuilder().addGrid(AFT.maxIter, Array(100, 500, 1000)).addGrid(AFT.tol, Array(1E-2, 1E-6)).build() // 选择(prediction, true label),计算测试误差。
// 注意RegEvaluator.isLargerBetter,评估的度量值是大的好,还是小的好,系统会自动识别
val RegEvaluator = new RegressionEvaluator().setLabelCol(AFT.getLabelCol).setPredictionCol(AFT.getPredictionCol).setMetricName("rmse") // 设置交叉验证
val cv = new CrossValidator().setEstimator(pipeline).setEvaluator(RegEvaluator).setEstimatorParamMaps(paramGrid).setNumFolds(3) // 执行交叉验证,并选择出最好的参数集
val cvModel = cv.fit(trainingDF) // 查看全部参数
cvModel.extractParamMap()
// cvModel.avgMetrics.length=cvModel.getEstimatorParamMaps.length
// cvModel.avgMetrics与cvModel.getEstimatorParamMaps中的元素一一对应
cvModel.avgMetrics.length
cvModel.avgMetrics // 参数对应的平均度量 cvModel.getEstimatorParamMaps.length
cvModel.getEstimatorParamMaps // 参数组合的集合 cvModel.getEvaluator.extractParamMap() // 评估的参数 cvModel.getEvaluator.isLargerBetter // 评估的度量值是大的好,还是小的好
cvModel.getNumFolds // 交叉验证的折数 //################################
// 测试模型
val predictDF: DataFrame = cvModel.transform(testDF).selectExpr(
//"race","poverty","smoke","alcohol","agemth","ybirth","yschool","pc3mth", "features",
"label", "censor",
"round(prediction,2) as prediction").orderBy("label")
predictDF.show spark.stop()

代码执行结果

// 查看全部参数
cvModel.extractParamMap()
res2: org.apache.spark.ml.param.ParamMap =
{
cv_baf8c9af33b7-estimator: pipeline_20ba567066f7,
cv_baf8c9af33b7-estimatorParamMaps: [Lorg.apache.spark.ml.param.ParamMap;@412a07c8,
cv_baf8c9af33b7-evaluator: regEval_59075079f1c9,
cv_baf8c9af33b7-numFolds: 3,
cv_baf8c9af33b7-seed: -1191137437
} // cvModel.avgMetrics.length=cvModel.getEstimatorParamMaps.length
// cvModel.avgMetrics与cvModel.getEstimatorParamMaps中的元素一一对应
cvModel.avgMetrics.length
res3: Int = 6 cvModel.avgMetrics // 参数对应的平均度量
res4: Array[Double] = Array(18.53, 17.53, 19.53, 17.63, 18.53, 18.93) cvModel.getEstimatorParamMaps.length
res5: Int = 6 cvModel.getEstimatorParamMaps // 参数组合的集合
res6: Array[org.apache.spark.ml.param.ParamMap] =
Array({
aftSurvReg_a7e5bc450599-maxIter: 100,
aftSurvReg_a7e5bc450599-tol: 0.01
}, {
aftSurvReg_a7e5bc450599-maxIter: 100,
aftSurvReg_a7e5bc450599-tol: 1.0E-6
}, {
aftSurvReg_a7e5bc450599-maxIter: 500,
aftSurvReg_a7e5bc450599-tol: 0.01
}, {
aftSurvReg_a7e5bc450599-maxIter: 500,
aftSurvReg_a7e5bc450599-tol: 1.0E-6
}, {
aftSurvReg_a7e5bc450599-maxIter: 1000,
aftSurvReg_a7e5bc450599-tol: 0.01
}, {
aftSurvReg_a7e5bc450599-maxIter: 1000,
aftSurvReg_a7e5bc450599-tol: 1.0E-6
}) cvModel.getEvaluator.extractParamMap() // 评估的参数
res7: org.apache.spark.ml.param.ParamMap =
{
regEval_59075079f1c9-labelCol: label,
regEval_59075079f1c9-metricName: rmse,
regEval_59075079f1c9-predictionCol: prediction
} cvModel.getEvaluator.isLargerBetter // 评估的度量值是大的好,还是小的好
res8: Boolean = false // 这里显示“评估的度量值”是小的好 cvModel.getNumFolds // 交叉验证的折数
res9: Int = 3 //################################
// 测试模型
val predictDF: DataFrame = cvModel.transform(testDF).selectExpr(
| //"race","poverty","smoke","alcohol","agemth","ybirth","yschool","pc3mth", "features",
| "label", "censor",
| "round(prediction,2) as prediction").orderBy("label")
predictDF: org.apache.spark.sql.DataFrame = [label: double, censor: double ... 1 more field] predictDF.show
+-----+------+----------+
|label|censor|prediction|
+-----+------+----------+
| 1.0| 1.0| 15.4|
| 1.0| 1.0| 20.02|
| 1.0| 1.0| 18.73|
| 1.0| 1.0| 21.58|
| 1.0| 1.0| 21.8|
| 1.0| 1.0| 21.8|
| 1.0| 1.0| 14.37|
| 1.0| 1.0| 13.5|
| 1.0| 1.0| 15.82|
| 1.0| 1.0| 19.51|
| 1.0| 1.0| 13.17|
| 1.0| 1.0| 11.9|
| 1.0| 1.0| 17.26|
| 1.0| 1.0| 13.57|
| 1.0| 1.0| 11.57|
| 1.0| 1.0| 13.55|
| 1.0| 1.0| 10.95|
| 1.0| 1.0| 14.92|
| 1.0| 1.0| 12.25|
| 1.0| 1.0| 19.62|
+-----+------+----------+
only showing top 20 rows

  

Spark2 生存分析Survival regression的更多相关文章

  1. 生存分析(survival analysis)

    一.生存分析(survival analysis)的定义 生存分析:对一个或多个非负随机变量进行统计推断,研究生存现象和响应时间数据及其统计规律的一门学科. 生存分析:既考虑结果又考虑生存时间的一种统 ...

  2. 生存模型(Survival Model)介绍

    https://www.cnblogs.com/BinbinChen/p/3416972.html 生存分析,维基上的解释是: 生存分析(Survival analysis)是指根据试验或调查得到的数 ...

  3. BMDP为常规的统计分析提供了大量的完备的函数系统,如:方差分析(ANOVA)、回归分析(Regression)、非参数分析(Nonparametric Analysis)、时间序列(Times Series)等等。此外,BMDP特别擅于进行出色的生存分析(Survival Analysis )。许多年来,一大批世界范围内顶级的统计学家都曾今参与过BMDP的开发工作。这不仅使得BMDP的权威性得到

        BMDP是Bio Medical Data Processing的缩写,是世界级的统计工具软件,至今已经有40多年的历史.目前在国际上与SAS.SPSS被并称为三大统计软件包.BMDP是一个大 ...

  4. survival analysis 生存分析与R 语言示例 入门篇

    原创博客,未经允许,不得转载. 生存分析,survival analysis,顾名思义是用来研究个体的存活概率与时间的关系.例如研究病人感染了病毒后,多长时间会死亡:工作的机器多长时间会发生崩溃等. ...

  5. WOE:信用评分卡模型中的变量离散化方法(生存分析)

    WOE:信用评分卡模型中的变量离散化方法 2016-03-21 生存分析 在做回归模型时,因临床需要常常需要对连续性的变量离散化,诸如年龄,分为老.中.青三组,一般的做法是ROC或者X-tile等等. ...

  6. R数据分析:生存分析与有竞争事件的生存分析的做法和解释

    今天被粉丝发的文章给难住了,又偷偷去学习了一下竞争风险模型,想起之前写的关于竞争风险模型的做法,真的都是皮毛哟,大家见笑了.想着就顺便把所有的生存分析的知识和R语言的做法和论文报告方法都给大家梳理一遍 ...

  7. Cox回归模型【生存分析】

    参考:<复杂数据统计方法--基于R的应用> 吴喜之 在生存分析中,研究的主要对象是寿命超过某一时间的概率.还可以描述其他一些事情发生的概率,例如产品的失效.出狱犯人第一次犯罪.失业人员第一 ...

  8. 生存分析与R--转载

    生存分析与R 生存分析是将事件的结果和出现这一结果所经历的时间结合起来分析的一类统计分析方法.不仅考虑事件是否出现,而且还考虑事件出现的时间长短,因此这类方法也被称为事件时间分析(time-to-ev ...

  9. R语言学习 - 非参数法生存分析--转载

    生存分析指根据试验或调查得到的数据对生物或人的生存时间进行分析和推断,研究生存时间和结局与众多影响因素间关系及其程度大小的方法,也称生存率分析或存活率分析.常用于肿瘤等疾病的标志物筛选.疗效及预后的考 ...

随机推荐

  1. 基于.NET平台常用的框架

    分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度. Redis:是一个高性能的K ...

  2. Chrome扩展应用

    现在越来越多的用户将chrome浏览器设置为自己默认的浏览器,不仅是因为他的界面美,最重要的是他对html5和CSS3完美的支持,且调试工具非常好用,还有丰富的扩展库.如何安装自己的扩展呢? 点击自定 ...

  3. pycharm使用docker镜像的python解释器,pycahrm可视化操作和管理dcoker

    网上关于pycahrm怎么使用docker容器的python解释器的科普,这方面太少,一半都只介绍pycahrm怎么使用linux的解释器.首先pycahrm确保是pro版本. 下面详细的介绍步骤 首 ...

  4. Java显示指定类型的文件

    文件作为存储数据的单元,会根据数据类型产生很多分类,也就是所谓的文件类型.在对数据文件进行操作时,常常需要根据不同的文件类型来作不同的处理.本实例实现的是读取文件夹指定类型的文件并显示到表格控件中.这 ...

  5. 05-Vim命令合集

    Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...

  6. jdbc数据访问技术

    jdbc数据访问技术 1.JDBC如何做事务处理? Con.setAutoCommit(false) Con.commit(); Con.rollback(); 2.写出几个在Jdbc中常用的接口 p ...

  7. javascript的replace方法的高级应用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. ckeditor4.4.6添加代码高亮

    研究了很久才发现,在 ckeditor4.4.6中添加代码高亮超级简单啊,下面直接上过程 ckeditor4.4.6支持自定义代码高亮,利用Code Snippet插件并默认启用highlight.j ...

  9. Django SimpleCMDB WSGI

    一.WSGI 介绍 (1) 在前面的学习中,我们是通过 python manage.py runserver 0.0.0.0:8000 来启动并访问开发服务器的:(2) 但在实际中我们是通过直接访问 ...

  10. ARM入门最好的文章

    一 首先说说arm的发展  可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位.广义的嵌入式无非几种:传统的什么51.avr.pic称做嵌入式微控制器:arm是嵌入式微处理器 ...