PageRenderTime 44ms CodeModel.GetById 11ms RepoModel.GetById 1ms app.codeStats 0ms

/Languages/IronPython/Tests/test_slice.py

http://github.com/IronLanguages/main
Python | 3157 lines | 3076 code | 57 blank | 24 comment | 3 complexity | 43d174209dba8f42ba1ff29bf1c5ac1c MD5 | raw file
Possible License(s): CPL-1.0, BSD-3-Clause, ISC, GPL-2.0, MPL-2.0-no-copyleft-exception
  1. #####################################################################################
  2. #
  3. # Copyright (c) Microsoft Corporation. All rights reserved.
  4. #
  5. # This source code is subject to terms and conditions of the Apache License, Version 2.0. A
  6. # copy of the license can be found in the License.html file at the root of this distribution. If
  7. # you cannot locate the Apache License, Version 2.0, please send an email to
  8. # ironpy@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
  9. # by the terms of the Apache License, Version 2.0.
  10. #
  11. # You must not remove this notice, or any other, from this software.
  12. #
  13. #
  14. #####################################################################################
  15. from iptest.assert_util import *
  16. x="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  17. def test_string():
  18. Assert( x[10] == 'k')
  19. Assert( x[20] == 'u')
  20. Assert( x[30] == 'E')
  21. Assert( x[-10] == 'Q')
  22. Assert(x[-3] == 'X')
  23. Assert(x[14:20] == 'opqrst')
  24. Assert(x[20:14] == '')
  25. Assert(x[-30:-5] == 'wxyzABCDEFGHIJKLMNOPQRSTU')
  26. Assert(x[-5:-30] == '')
  27. Assert(x[3:40:2] == 'dfhjlnprtvxzBDFHJLN')
  28. Assert(x[40:3:2] == '')
  29. Assert(x[3:40:-2] == '')
  30. Assert(x[40:3:-2] == 'OMKIGECAywusqomkige')
  31. Assert(x[-40:-4:-2] == '')
  32. Assert(x[-4:-40:-2] == 'WUSQOMKIGECAywusqo')
  33. Assert(x[-40:-4:2] == 'moqsuwyACEGIKMOQSU')
  34. Assert(x[-4:-40:2] == '')
  35. Assert(x[-40:-5:-2] == '')
  36. Assert(x[-5:-40:-2] == 'VTRPNLJHFDBzxvtrpn')
  37. Assert(x[-40:-5:2] == 'moqsuwyACEGIKMOQSU')
  38. Assert(x[-5:-40:2] == '')
  39. Assert(x[-40:-6:-2] == '')
  40. Assert(x[-6:-40:-2] == 'USQOMKIGECAywusqo')
  41. Assert(x[-40:-6:2] == 'moqsuwyACEGIKMOQS')
  42. Assert(x[-6:-40:2] == '')
  43. Assert(x[-49:-5:-3] == '')
  44. Assert(x[-5:-49:-3] == 'VSPMJGDAxurolif')
  45. Assert(x[-49:-5:3] == 'dgjmpsvyBEHKNQT')
  46. Assert(x[-5:-49:3] == '')
  47. Assert(x[-50:-5:-3] == '')
  48. Assert(x[-5:-50:-3] == 'VSPMJGDAxurolif')
  49. Assert(x[-50:-5:3] == 'cfiloruxADGJMPS')
  50. Assert(x[-5:-50:3] == '')
  51. Assert(x[-51:-5:-3] == '')
  52. Assert(x[-5:-51:-3] == 'VSPMJGDAxurolifc')
  53. Assert(x[-51:-5:3] == 'behknqtwzCFILORU')
  54. Assert(x[-5:-51:3] == '')
  55. def test_list_tuple():
  56. # check for good behaviour of slices on lists in general
  57. l=list(x)
  58. Assert( l[10] == 'k')
  59. Assert( l[20] == 'u')
  60. Assert( l[30] == 'E')
  61. Assert( l[-10] == 'Q')
  62. Assert(l[-3] == 'X')
  63. Assert(l[14:20] == list('opqrst'))
  64. Assert(l[20:14] == [])
  65. Assert(l[-51:-5:-3] == [])
  66. Assert(l[-5:-51:3] == [])
  67. Assert((1, 2, 3, 4, 5)[1:-1][::-1] == (4, 3, 2))
  68. Assert([1, 2, 3, 4, 5][1:-1][::-1] == [4, 3, 2])
  69. Assert((9, 7, 5, 3) == (1, 2, 3, 4, 5, 6, 7, 8, 9, 0)[1:-1][::-2])
  70. Assert([9, 7, 5, 3] == [1, 2, 3, 4, 5, 6, 7, 8, 9, 0][1:-1][::-2])
  71. Assert((2, 4, 6, 8) == (1, 2, 3, 4, 5, 6, 7, 8, 9, 0)[1:-1][::2])
  72. Assert([2, 4, 6, 8] == [1, 2, 3, 4, 5, 6, 7, 8, 9, 0][1:-1][::2])
  73. Assert((2, 5, 8) == (1, 2, 3, 4, 5, 6, 7, 8, 9, 0)[1:-1][::3])
  74. Assert([2, 5, 8] == [1, 2, 3, 4, 5, 6, 7, 8, 9, 0][1:-1][::3])
  75. def test_assign():
  76. l = list(x)
  77. l[2:50] = "10"
  78. Assert(l == list("ab10YZ"))
  79. l = list(x)
  80. l[2:50:2] = "~!@#$%^&*()-=_+[]{}|;:/?"
  81. Assert(l == list("ab~d!f@h#j$l%n^p&r*t(v)x-z=B_D+F[H]J{L}N|P;R:T/V?XYZ"))
  82. def test_negative():
  83. l = range(10)
  84. def f1(): l[::3] = [1]
  85. def f2(): l[::3] = range(5)
  86. def f3(): l[::3] = (1,)
  87. def f4(): l[::3] = (1, 2, 3, 4, 5, 6)
  88. for f in (f1, f2, f3, f4):
  89. AssertError(ValueError, f)
  90. def test__new__():
  91. AreEqual(slice(3) == slice(0, 3, 1), False)
  92. AreEqual(slice(3) == slice(None, 3, None), True)
  93. AreEqual(slice(3) == 3, False)
  94. AreEqual(range(10)[slice(None,None,2)], [0,2,4,6,8])
  95. def test_coverage():
  96. # ToString
  97. AreEqual(str(slice(1,2,3)), 'slice(1, 2, 3)')
  98. # ...
  99. #***** Copying from 'IndiceTest' *****
  100. def t(i,j,k,l,r) :
  101. rr = slice(i,j,k).indices(l)
  102. Assert(rr == r, "slice(" + str(i) + "," + str(j) + "," + str(k) + ").indices(" + str(l) + ") != " + str(r) + ": " + str(rr))
  103. def a():
  104. t(None,None,-5,-100,(-101, -1, -5))
  105. t(None,None,-5,-15,(-16, -1, -5))
  106. t(None,None,-5,-3,(-4, -1, -5))
  107. t(None,None,-5,0,(-1, -1, -5))
  108. t(None,None,-5,1,(0, -1, -5))
  109. t(None,None,-5,5,(4, -1, -5))
  110. t(None,None,-5,10,(9, -1, -5))
  111. t(None,None,-5,100,(99, -1, -5))
  112. t(None,None,-3,-100,(-101, -1, -3))
  113. t(None,None,-3,-15,(-16, -1, -3))
  114. t(None,None,-3,-3,(-4, -1, -3))
  115. t(None,None,-3,0,(-1, -1, -3))
  116. t(None,None,-3,1,(0, -1, -3))
  117. t(None,None,-3,5,(4, -1, -3))
  118. t(None,None,-3,10,(9, -1, -3))
  119. t(None,None,-3,100,(99, -1, -3))
  120. t(None,None,-1,-100,(-101, -1, -1))
  121. t(None,None,-1,-15,(-16, -1, -1))
  122. t(None,None,-1,-3,(-4, -1, -1))
  123. t(None,None,-1,0,(-1, -1, -1))
  124. t(None,None,-1,1,(0, -1, -1))
  125. t(None,None,-1,5,(4, -1, -1))
  126. t(None,None,-1,10,(9, -1, -1))
  127. t(None,None,-1,100,(99, -1, -1))
  128. t(None,None,1,-100,(0, -100, 1))
  129. t(None,None,1,-15,(0, -15, 1))
  130. t(None,None,1,-3,(0, -3, 1))
  131. t(None,None,1,0,(0, 0, 1))
  132. t(None,None,1,1,(0, 1, 1))
  133. t(None,None,1,5,(0, 5, 1))
  134. t(None,None,1,10,(0, 10, 1))
  135. t(None,None,1,100,(0, 100, 1))
  136. t(None,None,5,-100,(0, -100, 5))
  137. t(None,None,5,-15,(0, -15, 5))
  138. t(None,None,5,-3,(0, -3, 5))
  139. t(None,None,5,0,(0, 0, 5))
  140. t(None,None,5,1,(0, 1, 5))
  141. t(None,None,5,5,(0, 5, 5))
  142. t(None,None,5,10,(0, 10, 5))
  143. t(None,None,5,100,(0, 100, 5))
  144. t(None,None,20,-100,(0, -100, 20))
  145. t(None,None,20,-15,(0, -15, 20))
  146. t(None,None,20,-3,(0, -3, 20))
  147. t(None,None,20,0,(0, 0, 20))
  148. t(None,None,20,1,(0, 1, 20))
  149. t(None,None,20,5,(0, 5, 20))
  150. t(None,None,20,10,(0, 10, 20))
  151. t(None,None,20,100,(0, 100, 20))
  152. t(None,-7,-5,-100,(-101, -101, -5))
  153. t(None,-7,-5,-15,(-16, -16, -5))
  154. t(None,-7,-5,-3,(-4, -4, -5))
  155. t(None,-7,-5,0,(-1, -1, -5))
  156. t(None,-7,-5,1,(0, -1, -5))
  157. t(None,-7,-5,5,(4, -1, -5))
  158. t(None,-7,-5,10,(9, 3, -5))
  159. t(None,-7,-5,100,(99, 93, -5))
  160. t(None,-7,-3,-100,(-101, -101, -3))
  161. t(None,-7,-3,-15,(-16, -16, -3))
  162. t(None,-7,-3,-3,(-4, -4, -3))
  163. t(None,-7,-3,0,(-1, -1, -3))
  164. t(None,-7,-3,1,(0, -1, -3))
  165. t(None,-7,-3,5,(4, -1, -3))
  166. t(None,-7,-3,10,(9, 3, -3))
  167. t(None,-7,-3,100,(99, 93, -3))
  168. t(None,-7,-1,-100,(-101, -101, -1))
  169. t(None,-7,-1,-15,(-16, -16, -1))
  170. t(None,-7,-1,-3,(-4, -4, -1))
  171. t(None,-7,-1,0,(-1, -1, -1))
  172. t(None,-7,-1,1,(0, -1, -1))
  173. t(None,-7,-1,5,(4, -1, -1))
  174. t(None,-7,-1,10,(9, 3, -1))
  175. t(None,-7,-1,100,(99, 93, -1))
  176. t(None,-7,1,-100,(0, -100, 1))
  177. t(None,-7,1,-15,(0, -15, 1))
  178. t(None,-7,1,-3,(0, -3, 1))
  179. t(None,-7,1,0,(0, 0, 1))
  180. t(None,-7,1,1,(0, 0, 1))
  181. t(None,-7,1,5,(0, 0, 1))
  182. t(None,-7,1,10,(0, 3, 1))
  183. t(None,-7,1,100,(0, 93, 1))
  184. t(None,-7,5,-100,(0, -100, 5))
  185. t(None,-7,5,-15,(0, -15, 5))
  186. t(None,-7,5,-3,(0, -3, 5))
  187. t(None,-7,5,0,(0, 0, 5))
  188. t(None,-7,5,1,(0, 0, 5))
  189. t(None,-7,5,5,(0, 0, 5))
  190. t(None,-7,5,10,(0, 3, 5))
  191. t(None,-7,5,100,(0, 93, 5))
  192. t(None,-7,20,-100,(0, -100, 20))
  193. t(None,-7,20,-15,(0, -15, 20))
  194. t(None,-7,20,-3,(0, -3, 20))
  195. t(None,-7,20,0,(0, 0, 20))
  196. t(None,-7,20,1,(0, 0, 20))
  197. t(None,-7,20,5,(0, 0, 20))
  198. t(None,-7,20,10,(0, 3, 20))
  199. t(None,-7,20,100,(0, 93, 20))
  200. t(None,-2,-5,-100,(-101, -101, -5))
  201. t(None,-2,-5,-15,(-16, -16, -5))
  202. t(None,-2,-5,-3,(-4, -4, -5))
  203. t(None,-2,-5,0,(-1, -1, -5))
  204. t(None,-2,-5,1,(0, -1, -5))
  205. t(None,-2,-5,5,(4, 3, -5))
  206. t(None,-2,-5,10,(9, 8, -5))
  207. t(None,-2,-5,100,(99, 98, -5))
  208. t(None,-2,-3,-100,(-101, -101, -3))
  209. t(None,-2,-3,-15,(-16, -16, -3))
  210. t(None,-2,-3,-3,(-4, -4, -3))
  211. t(None,-2,-3,0,(-1, -1, -3))
  212. t(None,-2,-3,1,(0, -1, -3))
  213. t(None,-2,-3,5,(4, 3, -3))
  214. t(None,-2,-3,10,(9, 8, -3))
  215. t(None,-2,-3,100,(99, 98, -3))
  216. t(None,-2,-1,-100,(-101, -101, -1))
  217. t(None,-2,-1,-15,(-16, -16, -1))
  218. t(None,-2,-1,-3,(-4, -4, -1))
  219. t(None,-2,-1,0,(-1, -1, -1))
  220. t(None,-2,-1,1,(0, -1, -1))
  221. t(None,-2,-1,5,(4, 3, -1))
  222. t(None,-2,-1,10,(9, 8, -1))
  223. t(None,-2,-1,100,(99, 98, -1))
  224. t(None,-2,1,-100,(0, -100, 1))
  225. t(None,-2,1,-15,(0, -15, 1))
  226. t(None,-2,1,-3,(0, -3, 1))
  227. t(None,-2,1,0,(0, 0, 1))
  228. t(None,-2,1,1,(0, 0, 1))
  229. t(None,-2,1,5,(0, 3, 1))
  230. t(None,-2,1,10,(0, 8, 1))
  231. t(None,-2,1,100,(0, 98, 1))
  232. t(None,-2,5,-100,(0, -100, 5))
  233. t(None,-2,5,-15,(0, -15, 5))
  234. t(None,-2,5,-3,(0, -3, 5))
  235. t(None,-2,5,0,(0, 0, 5))
  236. t(None,-2,5,1,(0, 0, 5))
  237. t(None,-2,5,5,(0, 3, 5))
  238. t(None,-2,5,10,(0, 8, 5))
  239. t(None,-2,5,100,(0, 98, 5))
  240. t(None,-2,20,-100,(0, -100, 20))
  241. t(None,-2,20,-15,(0, -15, 20))
  242. t(None,-2,20,-3,(0, -3, 20))
  243. t(None,-2,20,0,(0, 0, 20))
  244. t(None,-2,20,1,(0, 0, 20))
  245. t(None,-2,20,5,(0, 3, 20))
  246. t(None,-2,20,10,(0, 8, 20))
  247. t(None,-2,20,100,(0, 98, 20))
  248. t(None,0,-5,-100,(-101, -101, -5))
  249. t(None,0,-5,-15,(-16, -16, -5))
  250. t(None,0,-5,-3,(-4, -4, -5))
  251. t(None,0,-5,0,(-1, -1, -5))
  252. t(None,0,-5,1,(0, 0, -5))
  253. t(None,0,-5,5,(4, 0, -5))
  254. t(None,0,-5,10,(9, 0, -5))
  255. t(None,0,-5,100,(99, 0, -5))
  256. t(None,0,-3,-100,(-101, -101, -3))
  257. t(None,0,-3,-15,(-16, -16, -3))
  258. t(None,0,-3,-3,(-4, -4, -3))
  259. t(None,0,-3,0,(-1, -1, -3))
  260. t(None,0,-3,1,(0, 0, -3))
  261. t(None,0,-3,5,(4, 0, -3))
  262. t(None,0,-3,10,(9, 0, -3))
  263. t(None,0,-3,100,(99, 0, -3))
  264. t(None,0,-1,-100,(-101, -101, -1))
  265. t(None,0,-1,-15,(-16, -16, -1))
  266. t(None,0,-1,-3,(-4, -4, -1))
  267. t(None,0,-1,0,(-1, -1, -1))
  268. t(None,0,-1,1,(0, 0, -1))
  269. t(None,0,-1,5,(4, 0, -1))
  270. t(None,0,-1,10,(9, 0, -1))
  271. t(None,0,-1,100,(99, 0, -1))
  272. t(None,0,1,-100,(0, -100, 1))
  273. t(None,0,1,-15,(0, -15, 1))
  274. t(None,0,1,-3,(0, -3, 1))
  275. t(None,0,1,0,(0, 0, 1))
  276. t(None,0,1,1,(0, 0, 1))
  277. t(None,0,1,5,(0, 0, 1))
  278. t(None,0,1,10,(0, 0, 1))
  279. t(None,0,1,100,(0, 0, 1))
  280. t(None,0,5,-100,(0, -100, 5))
  281. t(None,0,5,-15,(0, -15, 5))
  282. t(None,0,5,-3,(0, -3, 5))
  283. t(None,0,5,0,(0, 0, 5))
  284. t(None,0,5,1,(0, 0, 5))
  285. t(None,0,5,5,(0, 0, 5))
  286. t(None,0,5,10,(0, 0, 5))
  287. t(None,0,5,100,(0, 0, 5))
  288. t(None,0,20,-100,(0, -100, 20))
  289. t(None,0,20,-15,(0, -15, 20))
  290. t(None,0,20,-3,(0, -3, 20))
  291. t(None,0,20,0,(0, 0, 20))
  292. t(None,0,20,1,(0, 0, 20))
  293. t(None,0,20,5,(0, 0, 20))
  294. t(None,0,20,10,(0, 0, 20))
  295. t(None,0,20,100,(0, 0, 20))
  296. t(None,1,-5,-100,(-101, -101, -5))
  297. t(None,1,-5,-15,(-16, -16, -5))
  298. t(None,1,-5,-3,(-4, -4, -5))
  299. t(None,1,-5,0,(-1, -1, -5))
  300. t(None,1,-5,1,(0, 0, -5))
  301. t(None,1,-5,5,(4, 1, -5))
  302. t(None,1,-5,10,(9, 1, -5))
  303. t(None,1,-5,100,(99, 1, -5))
  304. t(None,1,-3,-100,(-101, -101, -3))
  305. t(None,1,-3,-15,(-16, -16, -3))
  306. t(None,1,-3,-3,(-4, -4, -3))
  307. t(None,1,-3,0,(-1, -1, -3))
  308. t(None,1,-3,1,(0, 0, -3))
  309. t(None,1,-3,5,(4, 1, -3))
  310. t(None,1,-3,10,(9, 1, -3))
  311. t(None,1,-3,100,(99, 1, -3))
  312. t(None,1,-1,-100,(-101, -101, -1))
  313. t(None,1,-1,-15,(-16, -16, -1))
  314. t(None,1,-1,-3,(-4, -4, -1))
  315. t(None,1,-1,0,(-1, -1, -1))
  316. t(None,1,-1,1,(0, 0, -1))
  317. t(None,1,-1,5,(4, 1, -1))
  318. t(None,1,-1,10,(9, 1, -1))
  319. t(None,1,-1,100,(99, 1, -1))
  320. t(None,1,1,-100,(0, -100, 1))
  321. t(None,1,1,-15,(0, -15, 1))
  322. t(None,1,1,-3,(0, -3, 1))
  323. t(None,1,1,0,(0, 0, 1))
  324. t(None,1,1,1,(0, 1, 1))
  325. t(None,1,1,5,(0, 1, 1))
  326. t(None,1,1,10,(0, 1, 1))
  327. t(None,1,1,100,(0, 1, 1))
  328. t(None,1,5,-100,(0, -100, 5))
  329. t(None,1,5,-15,(0, -15, 5))
  330. t(None,1,5,-3,(0, -3, 5))
  331. t(None,1,5,0,(0, 0, 5))
  332. t(None,1,5,1,(0, 1, 5))
  333. t(None,1,5,5,(0, 1, 5))
  334. t(None,1,5,10,(0, 1, 5))
  335. t(None,1,5,100,(0, 1, 5))
  336. t(None,1,20,-100,(0, -100, 20))
  337. t(None,1,20,-15,(0, -15, 20))
  338. t(None,1,20,-3,(0, -3, 20))
  339. t(None,1,20,0,(0, 0, 20))
  340. t(None,1,20,1,(0, 1, 20))
  341. t(None,1,20,5,(0, 1, 20))
  342. t(None,1,20,10,(0, 1, 20))
  343. t(None,1,20,100,(0, 1, 20))
  344. t(None,6,-5,-100,(-101, -101, -5))
  345. t(None,6,-5,-15,(-16, -16, -5))
  346. t(None,6,-5,-3,(-4, -4, -5))
  347. t(None,6,-5,0,(-1, -1, -5))
  348. t(None,6,-5,1,(0, 0, -5))
  349. t(None,6,-5,5,(4, 4, -5))
  350. t(None,6,-5,10,(9, 6, -5))
  351. t(None,6,-5,100,(99, 6, -5))
  352. t(None,6,-3,-100,(-101, -101, -3))
  353. t(None,6,-3,-15,(-16, -16, -3))
  354. t(None,6,-3,-3,(-4, -4, -3))
  355. t(None,6,-3,0,(-1, -1, -3))
  356. t(None,6,-3,1,(0, 0, -3))
  357. t(None,6,-3,5,(4, 4, -3))
  358. t(None,6,-3,10,(9, 6, -3))
  359. t(None,6,-3,100,(99, 6, -3))
  360. t(None,6,-1,-100,(-101, -101, -1))
  361. t(None,6,-1,-15,(-16, -16, -1))
  362. t(None,6,-1,-3,(-4, -4, -1))
  363. t(None,6,-1,0,(-1, -1, -1))
  364. t(None,6,-1,1,(0, 0, -1))
  365. t(None,6,-1,5,(4, 4, -1))
  366. t(None,6,-1,10,(9, 6, -1))
  367. t(None,6,-1,100,(99, 6, -1))
  368. t(None,6,1,-100,(0, -100, 1))
  369. t(None,6,1,-15,(0, -15, 1))
  370. t(None,6,1,-3,(0, -3, 1))
  371. t(None,6,1,0,(0, 0, 1))
  372. t(None,6,1,1,(0, 1, 1))
  373. t(None,6,1,5,(0, 5, 1))
  374. t(None,6,1,10,(0, 6, 1))
  375. t(None,6,1,100,(0, 6, 1))
  376. t(None,6,5,-100,(0, -100, 5))
  377. t(None,6,5,-15,(0, -15, 5))
  378. t(None,6,5,-3,(0, -3, 5))
  379. t(None,6,5,0,(0, 0, 5))
  380. t(None,6,5,1,(0, 1, 5))
  381. t(None,6,5,5,(0, 5, 5))
  382. t(None,6,5,10,(0, 6, 5))
  383. t(None,6,5,100,(0, 6, 5))
  384. t(None,6,20,-100,(0, -100, 20))
  385. t(None,6,20,-15,(0, -15, 20))
  386. t(None,6,20,-3,(0, -3, 20))
  387. t(None,6,20,0,(0, 0, 20))
  388. t(None,6,20,1,(0, 1, 20))
  389. t(None,6,20,5,(0, 5, 20))
  390. t(None,6,20,10,(0, 6, 20))
  391. t(None,6,20,100,(0, 6, 20))
  392. t(None,10,-5,-100,(-101, -101, -5))
  393. t(None,10,-5,-15,(-16, -16, -5))
  394. t(None,10,-5,-3,(-4, -4, -5))
  395. t(None,10,-5,0,(-1, -1, -5))
  396. t(None,10,-5,1,(0, 0, -5))
  397. t(None,10,-5,5,(4, 4, -5))
  398. t(None,10,-5,10,(9, 9, -5))
  399. t(None,10,-5,100,(99, 10, -5))
  400. t(None,10,-3,-100,(-101, -101, -3))
  401. t(None,10,-3,-15,(-16, -16, -3))
  402. t(None,10,-3,-3,(-4, -4, -3))
  403. t(None,10,-3,0,(-1, -1, -3))
  404. t(None,10,-3,1,(0, 0, -3))
  405. t(None,10,-3,5,(4, 4, -3))
  406. t(None,10,-3,10,(9, 9, -3))
  407. t(None,10,-3,100,(99, 10, -3))
  408. t(None,10,-1,-100,(-101, -101, -1))
  409. t(None,10,-1,-15,(-16, -16, -1))
  410. t(None,10,-1,-3,(-4, -4, -1))
  411. t(None,10,-1,0,(-1, -1, -1))
  412. t(None,10,-1,1,(0, 0, -1))
  413. t(None,10,-1,5,(4, 4, -1))
  414. t(None,10,-1,10,(9, 9, -1))
  415. t(None,10,-1,100,(99, 10, -1))
  416. t(None,10,1,-100,(0, -100, 1))
  417. t(None,10,1,-15,(0, -15, 1))
  418. t(None,10,1,-3,(0, -3, 1))
  419. t(None,10,1,0,(0, 0, 1))
  420. t(None,10,1,1,(0, 1, 1))
  421. t(None,10,1,5,(0, 5, 1))
  422. t(None,10,1,10,(0, 10, 1))
  423. t(None,10,1,100,(0, 10, 1))
  424. t(None,10,5,-100,(0, -100, 5))
  425. t(None,10,5,-15,(0, -15, 5))
  426. t(None,10,5,-3,(0, -3, 5))
  427. t(None,10,5,0,(0, 0, 5))
  428. t(None,10,5,1,(0, 1, 5))
  429. t(None,10,5,5,(0, 5, 5))
  430. t(None,10,5,10,(0, 10, 5))
  431. t(None,10,5,100,(0, 10, 5))
  432. t(None,10,20,-100,(0, -100, 20))
  433. t(None,10,20,-15,(0, -15, 20))
  434. t(None,10,20,-3,(0, -3, 20))
  435. t(None,10,20,0,(0, 0, 20))
  436. t(None,10,20,1,(0, 1, 20))
  437. t(None,10,20,5,(0, 5, 20))
  438. t(None,10,20,10,(0, 10, 20))
  439. t(None,10,20,100,(0, 10, 20))
  440. t(-7,None,-5,-100,(-101, -1, -5))
  441. t(-7,None,-5,-15,(-16, -1, -5))
  442. t(-7,None,-5,-3,(-4, -1, -5))
  443. t(-7,None,-5,0,(-1, -1, -5))
  444. t(-7,None,-5,1,(-1, -1, -5))
  445. t(-7,None,-5,5,(-1, -1, -5))
  446. t(-7,None,-5,10,(3, -1, -5))
  447. t(-7,None,-5,100,(93, -1, -5))
  448. t(-7,None,-3,-100,(-101, -1, -3))
  449. t(-7,None,-3,-15,(-16, -1, -3))
  450. t(-7,None,-3,-3,(-4, -1, -3))
  451. t(-7,None,-3,0,(-1, -1, -3))
  452. t(-7,None,-3,1,(-1, -1, -3))
  453. t(-7,None,-3,5,(-1, -1, -3))
  454. t(-7,None,-3,10,(3, -1, -3))
  455. t(-7,None,-3,100,(93, -1, -3))
  456. t(-7,None,-1,-100,(-101, -1, -1))
  457. t(-7,None,-1,-15,(-16, -1, -1))
  458. t(-7,None,-1,-3,(-4, -1, -1))
  459. t(-7,None,-1,0,(-1, -1, -1))
  460. t(-7,None,-1,1,(-1, -1, -1))
  461. t(-7,None,-1,5,(-1, -1, -1))
  462. t(-7,None,-1,10,(3, -1, -1))
  463. t(-7,None,-1,100,(93, -1, -1))
  464. t(-7,None,1,-100,(-100, -100, 1))
  465. t(-7,None,1,-15,(-15, -15, 1))
  466. t(-7,None,1,-3,(-3, -3, 1))
  467. t(-7,None,1,0,(0, 0, 1))
  468. t(-7,None,1,1,(0, 1, 1))
  469. t(-7,None,1,5,(0, 5, 1))
  470. t(-7,None,1,10,(3, 10, 1))
  471. t(-7,None,1,100,(93, 100, 1))
  472. t(-7,None,5,-100,(-100, -100, 5))
  473. t(-7,None,5,-15,(-15, -15, 5))
  474. t(-7,None,5,-3,(-3, -3, 5))
  475. t(-7,None,5,0,(0, 0, 5))
  476. t(-7,None,5,1,(0, 1, 5))
  477. t(-7,None,5,5,(0, 5, 5))
  478. t(-7,None,5,10,(3, 10, 5))
  479. t(-7,None,5,100,(93, 100, 5))
  480. t(-7,None,20,-100,(-100, -100, 20))
  481. t(-7,None,20,-15,(-15, -15, 20))
  482. t(-7,None,20,-3,(-3, -3, 20))
  483. t(-7,None,20,0,(0, 0, 20))
  484. t(-7,None,20,1,(0, 1, 20))
  485. t(-7,None,20,5,(0, 5, 20))
  486. t(-7,None,20,10,(3, 10, 20))
  487. t(-7,None,20,100,(93, 100, 20))
  488. t(-7,-7,-5,-100,(-101, -101, -5))
  489. t(-7,-7,-5,-15,(-16, -16, -5))
  490. t(-7,-7,-5,-3,(-4, -4, -5))
  491. t(-7,-7,-5,0,(-1, -1, -5))
  492. t(-7,-7,-5,1,(-1, -1, -5))
  493. t(-7,-7,-5,5,(-1, -1, -5))
  494. t(-7,-7,-5,10,(3, 3, -5))
  495. t(-7,-7,-5,100,(93, 93, -5))
  496. t(-7,-7,-3,-100,(-101, -101, -3))
  497. t(-7,-7,-3,-15,(-16, -16, -3))
  498. t(-7,-7,-3,-3,(-4, -4, -3))
  499. t(-7,-7,-3,0,(-1, -1, -3))
  500. t(-7,-7,-3,1,(-1, -1, -3))
  501. t(-7,-7,-3,5,(-1, -1, -3))
  502. t(-7,-7,-3,10,(3, 3, -3))
  503. t(-7,-7,-3,100,(93, 93, -3))
  504. t(-7,-7,-1,-100,(-101, -101, -1))
  505. t(-7,-7,-1,-15,(-16, -16, -1))
  506. t(-7,-7,-1,-3,(-4, -4, -1))
  507. t(-7,-7,-1,0,(-1, -1, -1))
  508. t(-7,-7,-1,1,(-1, -1, -1))
  509. t(-7,-7,-1,5,(-1, -1, -1))
  510. t(-7,-7,-1,10,(3, 3, -1))
  511. t(-7,-7,-1,100,(93, 93, -1))
  512. t(-7,-7,1,-100,(-100, -100, 1))
  513. t(-7,-7,1,-15,(-15, -15, 1))
  514. t(-7,-7,1,-3,(-3, -3, 1))
  515. t(-7,-7,1,0,(0, 0, 1))
  516. t(-7,-7,1,1,(0, 0, 1))
  517. t(-7,-7,1,5,(0, 0, 1))
  518. t(-7,-7,1,10,(3, 3, 1))
  519. t(-7,-7,1,100,(93, 93, 1))
  520. t(-7,-7,5,-100,(-100, -100, 5))
  521. t(-7,-7,5,-15,(-15, -15, 5))
  522. t(-7,-7,5,-3,(-3, -3, 5))
  523. t(-7,-7,5,0,(0, 0, 5))
  524. t(-7,-7,5,1,(0, 0, 5))
  525. t(-7,-7,5,5,(0, 0, 5))
  526. t(-7,-7,5,10,(3, 3, 5))
  527. t(-7,-7,5,100,(93, 93, 5))
  528. t(-7,-7,20,-100,(-100, -100, 20))
  529. t(-7,-7,20,-15,(-15, -15, 20))
  530. t(-7,-7,20,-3,(-3, -3, 20))
  531. t(-7,-7,20,0,(0, 0, 20))
  532. t(-7,-7,20,1,(0, 0, 20))
  533. t(-7,-7,20,5,(0, 0, 20))
  534. t(-7,-7,20,10,(3, 3, 20))
  535. t(-7,-7,20,100,(93, 93, 20))
  536. t(-7,-2,-5,-100,(-101, -101, -5))
  537. t(-7,-2,-5,-15,(-16, -16, -5))
  538. t(-7,-2,-5,-3,(-4, -4, -5))
  539. t(-7,-2,-5,0,(-1, -1, -5))
  540. t(-7,-2,-5,1,(-1, -1, -5))
  541. t(-7,-2,-5,5,(-1, 3, -5))
  542. t(-7,-2,-5,10,(3, 8, -5))
  543. t(-7,-2,-5,100,(93, 98, -5))
  544. t(-7,-2,-3,-100,(-101, -101, -3))
  545. t(-7,-2,-3,-15,(-16, -16, -3))
  546. t(-7,-2,-3,-3,(-4, -4, -3))
  547. t(-7,-2,-3,0,(-1, -1, -3))
  548. t(-7,-2,-3,1,(-1, -1, -3))
  549. t(-7,-2,-3,5,(-1, 3, -3))
  550. t(-7,-2,-3,10,(3, 8, -3))
  551. t(-7,-2,-3,100,(93, 98, -3))
  552. t(-7,-2,-1,-100,(-101, -101, -1))
  553. t(-7,-2,-1,-15,(-16, -16, -1))
  554. t(-7,-2,-1,-3,(-4, -4, -1))
  555. t(-7,-2,-1,0,(-1, -1, -1))
  556. t(-7,-2,-1,1,(-1, -1, -1))
  557. t(-7,-2,-1,5,(-1, 3, -1))
  558. t(-7,-2,-1,10,(3, 8, -1))
  559. t(-7,-2,-1,100,(93, 98, -1))
  560. t(-7,-2,1,-100,(-100, -100, 1))
  561. t(-7,-2,1,-15,(-15, -15, 1))
  562. t(-7,-2,1,-3,(-3, -3, 1))
  563. t(-7,-2,1,0,(0, 0, 1))
  564. t(-7,-2,1,1,(0, 0, 1))
  565. t(-7,-2,1,5,(0, 3, 1))
  566. t(-7,-2,1,10,(3, 8, 1))
  567. t(-7,-2,1,100,(93, 98, 1))
  568. t(-7,-2,5,-100,(-100, -100, 5))
  569. t(-7,-2,5,-15,(-15, -15, 5))
  570. t(-7,-2,5,-3,(-3, -3, 5))
  571. t(-7,-2,5,0,(0, 0, 5))
  572. t(-7,-2,5,1,(0, 0, 5))
  573. t(-7,-2,5,5,(0, 3, 5))
  574. t(-7,-2,5,10,(3, 8, 5))
  575. t(-7,-2,5,100,(93, 98, 5))
  576. t(-7,-2,20,-100,(-100, -100, 20))
  577. t(-7,-2,20,-15,(-15, -15, 20))
  578. t(-7,-2,20,-3,(-3, -3, 20))
  579. t(-7,-2,20,0,(0, 0, 20))
  580. t(-7,-2,20,1,(0, 0, 20))
  581. t(-7,-2,20,5,(0, 3, 20))
  582. t(-7,-2,20,10,(3, 8, 20))
  583. t(-7,-2,20,100,(93, 98, 20))
  584. t(-7,0,-5,-100,(-101, -101, -5))
  585. t(-7,0,-5,-15,(-16, -16, -5))
  586. t(-7,0,-5,-3,(-4, -4, -5))
  587. t(-7,0,-5,0,(-1, -1, -5))
  588. t(-7,0,-5,1,(-1, 0, -5))
  589. t(-7,0,-5,5,(-1, 0, -5))
  590. t(-7,0,-5,10,(3, 0, -5))
  591. t(-7,0,-5,100,(93, 0, -5))
  592. t(-7,0,-3,-100,(-101, -101, -3))
  593. t(-7,0,-3,-15,(-16, -16, -3))
  594. t(-7,0,-3,-3,(-4, -4, -3))
  595. t(-7,0,-3,0,(-1, -1, -3))
  596. t(-7,0,-3,1,(-1, 0, -3))
  597. t(-7,0,-3,5,(-1, 0, -3))
  598. t(-7,0,-3,10,(3, 0, -3))
  599. t(-7,0,-3,100,(93, 0, -3))
  600. t(-7,0,-1,-100,(-101, -101, -1))
  601. t(-7,0,-1,-15,(-16, -16, -1))
  602. t(-7,0,-1,-3,(-4, -4, -1))
  603. t(-7,0,-1,0,(-1, -1, -1))
  604. t(-7,0,-1,1,(-1, 0, -1))
  605. t(-7,0,-1,5,(-1, 0, -1))
  606. t(-7,0,-1,10,(3, 0, -1))
  607. t(-7,0,-1,100,(93, 0, -1))
  608. t(-7,0,1,-100,(-100, -100, 1))
  609. t(-7,0,1,-15,(-15, -15, 1))
  610. t(-7,0,1,-3,(-3, -3, 1))
  611. t(-7,0,1,0,(0, 0, 1))
  612. t(-7,0,1,1,(0, 0, 1))
  613. t(-7,0,1,5,(0, 0, 1))
  614. t(-7,0,1,10,(3, 0, 1))
  615. t(-7,0,1,100,(93, 0, 1))
  616. t(-7,0,5,-100,(-100, -100, 5))
  617. t(-7,0,5,-15,(-15, -15, 5))
  618. t(-7,0,5,-3,(-3, -3, 5))
  619. t(-7,0,5,0,(0, 0, 5))
  620. t(-7,0,5,1,(0, 0, 5))
  621. t(-7,0,5,5,(0, 0, 5))
  622. t(-7,0,5,10,(3, 0, 5))
  623. t(-7,0,5,100,(93, 0, 5))
  624. t(-7,0,20,-100,(-100, -100, 20))
  625. t(-7,0,20,-15,(-15, -15, 20))
  626. t(-7,0,20,-3,(-3, -3, 20))
  627. t(-7,0,20,0,(0, 0, 20))
  628. t(-7,0,20,1,(0, 0, 20))
  629. t(-7,0,20,5,(0, 0, 20))
  630. t(-7,0,20,10,(3, 0, 20))
  631. t(-7,0,20,100,(93, 0, 20))
  632. t(-7,1,-5,-100,(-101, -101, -5))
  633. t(-7,1,-5,-15,(-16, -16, -5))
  634. t(-7,1,-5,-3,(-4, -4, -5))
  635. t(-7,1,-5,0,(-1, -1, -5))
  636. t(-7,1,-5,1,(-1, 0, -5))
  637. t(-7,1,-5,5,(-1, 1, -5))
  638. t(-7,1,-5,10,(3, 1, -5))
  639. t(-7,1,-5,100,(93, 1, -5))
  640. t(-7,1,-3,-100,(-101, -101, -3))
  641. t(-7,1,-3,-15,(-16, -16, -3))
  642. t(-7,1,-3,-3,(-4, -4, -3))
  643. t(-7,1,-3,0,(-1, -1, -3))
  644. t(-7,1,-3,1,(-1, 0, -3))
  645. t(-7,1,-3,5,(-1, 1, -3))
  646. t(-7,1,-3,10,(3, 1, -3))
  647. t(-7,1,-3,100,(93, 1, -3))
  648. t(-7,1,-1,-100,(-101, -101, -1))
  649. t(-7,1,-1,-15,(-16, -16, -1))
  650. t(-7,1,-1,-3,(-4, -4, -1))
  651. t(-7,1,-1,0,(-1, -1, -1))
  652. t(-7,1,-1,1,(-1, 0, -1))
  653. t(-7,1,-1,5,(-1, 1, -1))
  654. t(-7,1,-1,10,(3, 1, -1))
  655. t(-7,1,-1,100,(93, 1, -1))
  656. t(-7,1,1,-100,(-100, -100, 1))
  657. t(-7,1,1,-15,(-15, -15, 1))
  658. t(-7,1,1,-3,(-3, -3, 1))
  659. t(-7,1,1,0,(0, 0, 1))
  660. t(-7,1,1,1,(0, 1, 1))
  661. t(-7,1,1,5,(0, 1, 1))
  662. t(-7,1,1,10,(3, 1, 1))
  663. t(-7,1,1,100,(93, 1, 1))
  664. t(-7,1,5,-100,(-100, -100, 5))
  665. t(-7,1,5,-15,(-15, -15, 5))
  666. t(-7,1,5,-3,(-3, -3, 5))
  667. t(-7,1,5,0,(0, 0, 5))
  668. t(-7,1,5,1,(0, 1, 5))
  669. t(-7,1,5,5,(0, 1, 5))
  670. t(-7,1,5,10,(3, 1, 5))
  671. t(-7,1,5,100,(93, 1, 5))
  672. t(-7,1,20,-100,(-100, -100, 20))
  673. t(-7,1,20,-15,(-15, -15, 20))
  674. t(-7,1,20,-3,(-3, -3, 20))
  675. t(-7,1,20,0,(0, 0, 20))
  676. t(-7,1,20,1,(0, 1, 20))
  677. t(-7,1,20,5,(0, 1, 20))
  678. t(-7,1,20,10,(3, 1, 20))
  679. t(-7,1,20,100,(93, 1, 20))
  680. t(-7,6,-5,-100,(-101, -101, -5))
  681. t(-7,6,-5,-15,(-16, -16, -5))
  682. t(-7,6,-5,-3,(-4, -4, -5))
  683. t(-7,6,-5,0,(-1, -1, -5))
  684. t(-7,6,-5,1,(-1, 0, -5))
  685. t(-7,6,-5,5,(-1, 4, -5))
  686. t(-7,6,-5,10,(3, 6, -5))
  687. t(-7,6,-5,100,(93, 6, -5))
  688. t(-7,6,-3,-100,(-101, -101, -3))
  689. t(-7,6,-3,-15,(-16, -16, -3))
  690. t(-7,6,-3,-3,(-4, -4, -3))
  691. t(-7,6,-3,0,(-1, -1, -3))
  692. t(-7,6,-3,1,(-1, 0, -3))
  693. t(-7,6,-3,5,(-1, 4, -3))
  694. t(-7,6,-3,10,(3, 6, -3))
  695. t(-7,6,-3,100,(93, 6, -3))
  696. t(-7,6,-1,-100,(-101, -101, -1))
  697. t(-7,6,-1,-15,(-16, -16, -1))
  698. t(-7,6,-1,-3,(-4, -4, -1))
  699. t(-7,6,-1,0,(-1, -1, -1))
  700. t(-7,6,-1,1,(-1, 0, -1))
  701. t(-7,6,-1,5,(-1, 4, -1))
  702. t(-7,6,-1,10,(3, 6, -1))
  703. t(-7,6,-1,100,(93, 6, -1))
  704. t(-7,6,1,-100,(-100, -100, 1))
  705. t(-7,6,1,-15,(-15, -15, 1))
  706. t(-7,6,1,-3,(-3, -3, 1))
  707. t(-7,6,1,0,(0, 0, 1))
  708. t(-7,6,1,1,(0, 1, 1))
  709. t(-7,6,1,5,(0, 5, 1))
  710. t(-7,6,1,10,(3, 6, 1))
  711. t(-7,6,1,100,(93, 6, 1))
  712. t(-7,6,5,-100,(-100, -100, 5))
  713. t(-7,6,5,-15,(-15, -15, 5))
  714. t(-7,6,5,-3,(-3, -3, 5))
  715. t(-7,6,5,0,(0, 0, 5))
  716. t(-7,6,5,1,(0, 1, 5))
  717. t(-7,6,5,5,(0, 5, 5))
  718. t(-7,6,5,10,(3, 6, 5))
  719. t(-7,6,5,100,(93, 6, 5))
  720. t(-7,6,20,-100,(-100, -100, 20))
  721. t(-7,6,20,-15,(-15, -15, 20))
  722. t(-7,6,20,-3,(-3, -3, 20))
  723. t(-7,6,20,0,(0, 0, 20))
  724. t(-7,6,20,1,(0, 1, 20))
  725. t(-7,6,20,5,(0, 5, 20))
  726. t(-7,6,20,10,(3, 6, 20))
  727. t(-7,6,20,100,(93, 6, 20))
  728. t(-7,10,-5,-100,(-101, -101, -5))
  729. t(-7,10,-5,-15,(-16, -16, -5))
  730. t(-7,10,-5,-3,(-4, -4, -5))
  731. t(-7,10,-5,0,(-1, -1, -5))
  732. t(-7,10,-5,1,(-1, 0, -5))
  733. t(-7,10,-5,5,(-1, 4, -5))
  734. t(-7,10,-5,10,(3, 9, -5))
  735. t(-7,10,-5,100,(93, 10, -5))
  736. t(-7,10,-3,-100,(-101, -101, -3))
  737. t(-7,10,-3,-15,(-16, -16, -3))
  738. t(-7,10,-3,-3,(-4, -4, -3))
  739. t(-7,10,-3,0,(-1, -1, -3))
  740. t(-7,10,-3,1,(-1, 0, -3))
  741. t(-7,10,-3,5,(-1, 4, -3))
  742. t(-7,10,-3,10,(3, 9, -3))
  743. t(-7,10,-3,100,(93, 10, -3))
  744. t(-7,10,-1,-100,(-101, -101, -1))
  745. t(-7,10,-1,-15,(-16, -16, -1))
  746. t(-7,10,-1,-3,(-4, -4, -1))
  747. t(-7,10,-1,0,(-1, -1, -1))
  748. t(-7,10,-1,1,(-1, 0, -1))
  749. t(-7,10,-1,5,(-1, 4, -1))
  750. t(-7,10,-1,10,(3, 9, -1))
  751. t(-7,10,-1,100,(93, 10, -1))
  752. t(-7,10,1,-100,(-100, -100, 1))
  753. t(-7,10,1,-15,(-15, -15, 1))
  754. t(-7,10,1,-3,(-3, -3, 1))
  755. t(-7,10,1,0,(0, 0, 1))
  756. t(-7,10,1,1,(0, 1, 1))
  757. t(-7,10,1,5,(0, 5, 1))
  758. t(-7,10,1,10,(3, 10, 1))
  759. t(-7,10,1,100,(93, 10, 1))
  760. t(-7,10,5,-100,(-100, -100, 5))
  761. t(-7,10,5,-15,(-15, -15, 5))
  762. t(-7,10,5,-3,(-3, -3, 5))
  763. t(-7,10,5,0,(0, 0, 5))
  764. t(-7,10,5,1,(0, 1, 5))
  765. t(-7,10,5,5,(0, 5, 5))
  766. t(-7,10,5,10,(3, 10, 5))
  767. t(-7,10,5,100,(93, 10, 5))
  768. t(-7,10,20,-100,(-100, -100, 20))
  769. t(-7,10,20,-15,(-15, -15, 20))
  770. t(-7,10,20,-3,(-3, -3, 20))
  771. t(-7,10,20,0,(0, 0, 20))
  772. t(-7,10,20,1,(0, 1, 20))
  773. t(-7,10,20,5,(0, 5, 20))
  774. t(-7,10,20,10,(3, 10, 20))
  775. t(-7,10,20,100,(93, 10, 20))
  776. t(-2,None,-5,-100,(-101, -1, -5))
  777. t(-2,None,-5,-15,(-16, -1, -5))
  778. t(-2,None,-5,-3,(-4, -1, -5))
  779. t(-2,None,-5,0,(-1, -1, -5))
  780. t(-2,None,-5,1,(-1, -1, -5))
  781. t(-2,None,-5,5,(3, -1, -5))
  782. t(-2,None,-5,10,(8, -1, -5))
  783. t(-2,None,-5,100,(98, -1, -5))
  784. t(-2,None,-3,-100,(-101, -1, -3))
  785. t(-2,None,-3,-15,(-16, -1, -3))
  786. t(-2,None,-3,-3,(-4, -1, -3))
  787. t(-2,None,-3,0,(-1, -1, -3))
  788. t(-2,None,-3,1,(-1, -1, -3))
  789. t(-2,None,-3,5,(3, -1, -3))
  790. t(-2,None,-3,10,(8, -1, -3))
  791. t(-2,None,-3,100,(98, -1, -3))
  792. t(-2,None,-1,-100,(-101, -1, -1))
  793. t(-2,None,-1,-15,(-16, -1, -1))
  794. t(-2,None,-1,-3,(-4, -1, -1))
  795. t(-2,None,-1,0,(-1, -1, -1))
  796. t(-2,None,-1,1,(-1, -1, -1))
  797. t(-2,None,-1,5,(3, -1, -1))
  798. t(-2,None,-1,10,(8, -1, -1))
  799. t(-2,None,-1,100,(98, -1, -1))
  800. t(-2,None,1,-100,(-100, -100, 1))
  801. t(-2,None,1,-15,(-15, -15, 1))
  802. t(-2,None,1,-3,(-3, -3, 1))
  803. t(-2,None,1,0,(0, 0, 1))
  804. t(-2,None,1,1,(0, 1, 1))
  805. t(-2,None,1,5,(3, 5, 1))
  806. t(-2,None,1,10,(8, 10, 1))
  807. t(-2,None,1,100,(98, 100, 1))
  808. t(-2,None,5,-100,(-100, -100, 5))
  809. t(-2,None,5,-15,(-15, -15, 5))
  810. t(-2,None,5,-3,(-3, -3, 5))
  811. t(-2,None,5,0,(0, 0, 5))
  812. t(-2,None,5,1,(0, 1, 5))
  813. t(-2,None,5,5,(3, 5, 5))
  814. t(-2,None,5,10,(8, 10, 5))
  815. t(-2,None,5,100,(98, 100, 5))
  816. t(-2,None,20,-100,(-100, -100, 20))
  817. t(-2,None,20,-15,(-15, -15, 20))
  818. t(-2,None,20,-3,(-3, -3, 20))
  819. t(-2,None,20,0,(0, 0, 20))
  820. t(-2,None,20,1,(0, 1, 20))
  821. t(-2,None,20,5,(3, 5, 20))
  822. t(-2,None,20,10,(8, 10, 20))
  823. t(-2,None,20,100,(98, 100, 20))
  824. t(-2,-7,-5,-100,(-101, -101, -5))
  825. t(-2,-7,-5,-15,(-16, -16, -5))
  826. t(-2,-7,-5,-3,(-4, -4, -5))
  827. t(-2,-7,-5,0,(-1, -1, -5))
  828. t(-2,-7,-5,1,(-1, -1, -5))
  829. t(-2,-7,-5,5,(3, -1, -5))
  830. t(-2,-7,-5,10,(8, 3, -5))
  831. t(-2,-7,-5,100,(98, 93, -5))
  832. t(-2,-7,-3,-100,(-101, -101, -3))
  833. t(-2,-7,-3,-15,(-16, -16, -3))
  834. t(-2,-7,-3,-3,(-4, -4, -3))
  835. t(-2,-7,-3,0,(-1, -1, -3))
  836. t(-2,-7,-3,1,(-1, -1, -3))
  837. t(-2,-7,-3,5,(3, -1, -3))
  838. t(-2,-7,-3,10,(8, 3, -3))
  839. t(-2,-7,-3,100,(98, 93, -3))
  840. t(-2,-7,-1,-100,(-101, -101, -1))
  841. t(-2,-7,-1,-15,(-16, -16, -1))
  842. t(-2,-7,-1,-3,(-4, -4, -1))
  843. t(-2,-7,-1,0,(-1, -1, -1))
  844. t(-2,-7,-1,1,(-1, -1, -1))
  845. t(-2,-7,-1,5,(3, -1, -1))
  846. t(-2,-7,-1,10,(8, 3, -1))
  847. t(-2,-7,-1,100,(98, 93, -1))
  848. t(-2,-7,1,-100,(-100, -100, 1))
  849. t(-2,-7,1,-15,(-15, -15, 1))
  850. t(-2,-7,1,-3,(-3, -3, 1))
  851. t(-2,-7,1,0,(0, 0, 1))
  852. t(-2,-7,1,1,(0, 0, 1))
  853. t(-2,-7,1,5,(3, 0, 1))
  854. t(-2,-7,1,10,(8, 3, 1))
  855. t(-2,-7,1,100,(98, 93, 1))
  856. t(-2,-7,5,-100,(-100, -100, 5))
  857. t(-2,-7,5,-15,(-15, -15, 5))
  858. t(-2,-7,5,-3,(-3, -3, 5))
  859. t(-2,-7,5,0,(0, 0, 5))
  860. t(-2,-7,5,1,(0, 0, 5))
  861. t(-2,-7,5,5,(3, 0, 5))
  862. t(-2,-7,5,10,(8, 3, 5))
  863. t(-2,-7,5,100,(98, 93, 5))
  864. t(-2,-7,20,-100,(-100, -100, 20))
  865. t(-2,-7,20,-15,(-15, -15, 20))
  866. t(-2,-7,20,-3,(-3, -3, 20))
  867. t(-2,-7,20,0,(0, 0, 20))
  868. t(-2,-7,20,1,(0, 0, 20))
  869. t(-2,-7,20,5,(3, 0, 20))
  870. t(-2,-7,20,10,(8, 3, 20))
  871. t(-2,-7,20,100,(98, 93, 20))
  872. t(-2,-2,-5,-100,(-101, -101, -5))
  873. t(-2,-2,-5,-15,(-16, -16, -5))
  874. t(-2,-2,-5,-3,(-4, -4, -5))
  875. t(-2,-2,-5,0,(-1, -1, -5))
  876. t(-2,-2,-5,1,(-1, -1, -5))
  877. t(-2,-2,-5,5,(3, 3, -5))
  878. t(-2,-2,-5,10,(8, 8, -5))
  879. t(-2,-2,-5,100,(98, 98, -5))
  880. t(-2,-2,-3,-100,(-101, -101, -3))
  881. t(-2,-2,-3,-15,(-16, -16, -3))
  882. t(-2,-2,-3,-3,(-4, -4, -3))
  883. t(-2,-2,-3,0,(-1, -1, -3))
  884. t(-2,-2,-3,1,(-1, -1, -3))
  885. def b():
  886. t(-2,-2,-3,5,(3, 3, -3))
  887. t(-2,-2,-3,10,(8, 8, -3))
  888. t(-2,-2,-3,100,(98, 98, -3))
  889. t(-2,-2,-1,-100,(-101, -101, -1))
  890. t(-2,-2,-1,-15,(-16, -16, -1))
  891. t(-2,-2,-1,-3,(-4, -4, -1))
  892. t(-2,-2,-1,0,(-1, -1, -1))
  893. t(-2,-2,-1,1,(-1, -1, -1))
  894. t(-2,-2,-1,5,(3, 3, -1))
  895. t(-2,-2,-1,10,(8, 8, -1))
  896. t(-2,-2,-1,100,(98, 98, -1))
  897. t(-2,-2,1,-100,(-100, -100, 1))
  898. t(-2,-2,1,-15,(-15, -15, 1))
  899. t(-2,-2,1,-3,(-3, -3, 1))
  900. t(-2,-2,1,0,(0, 0, 1))
  901. t(-2,-2,1,1,(0, 0, 1))
  902. t(-2,-2,1,5,(3, 3, 1))
  903. t(-2,-2,1,10,(8, 8, 1))
  904. t(-2,-2,1,100,(98, 98, 1))
  905. t(-2,-2,5,-100,(-100, -100, 5))
  906. t(-2,-2,5,-15,(-15, -15, 5))
  907. t(-2,-2,5,-3,(-3, -3, 5))
  908. t(-2,-2,5,0,(0, 0, 5))
  909. t(-2,-2,5,1,(0, 0, 5))
  910. t(-2,-2,5,5,(3, 3, 5))
  911. t(-2,-2,5,10,(8, 8, 5))
  912. t(-2,-2,5,100,(98, 98, 5))
  913. t(-2,-2,20,-100,(-100, -100, 20))
  914. t(-2,-2,20,-15,(-15, -15, 20))
  915. t(-2,-2,20,-3,(-3, -3, 20))
  916. t(-2,-2,20,0,(0, 0, 20))
  917. t(-2,-2,20,1,(0, 0, 20))
  918. t(-2,-2,20,5,(3, 3, 20))
  919. t(-2,-2,20,10,(8, 8, 20))
  920. t(-2,-2,20,100,(98, 98, 20))
  921. t(-2,0,-5,-100,(-101, -101, -5))
  922. t(-2,0,-5,-15,(-16, -16, -5))
  923. t(-2,0,-5,-3,(-4, -4, -5))
  924. t(-2,0,-5,0,(-1, -1, -5))
  925. t(-2,0,-5,1,(-1, 0, -5))
  926. t(-2,0,-5,5,(3, 0, -5))
  927. t(-2,0,-5,10,(8, 0, -5))
  928. t(-2,0,-5,100,(98, 0, -5))
  929. t(-2,0,-3,-100,(-101, -101, -3))
  930. t(-2,0,-3,-15,(-16, -16, -3))
  931. t(-2,0,-3,-3,(-4, -4, -3))
  932. t(-2,0,-3,0,(-1, -1, -3))
  933. t(-2,0,-3,1,(-1, 0, -3))
  934. t(-2,0,-3,5,(3, 0, -3))
  935. t(-2,0,-3,10,(8, 0, -3))
  936. t(-2,0,-3,100,(98, 0, -3))
  937. t(-2,0,-1,-100,(-101, -101, -1))
  938. t(-2,0,-1,-15,(-16, -16, -1))
  939. t(-2,0,-1,-3,(-4, -4, -1))
  940. t(-2,0,-1,0,(-1, -1, -1))
  941. t(-2,0,-1,1,(-1, 0, -1))
  942. t(-2,0,-1,5,(3, 0, -1))
  943. t(-2,0,-1,10,(8, 0, -1))
  944. t(-2,0,-1,100,(98, 0, -1))
  945. t(-2,0,1,-100,(-100, -100, 1))
  946. t(-2,0,1,-15,(-15, -15, 1))
  947. t(-2,0,1,-3,(-3, -3, 1))
  948. t(-2,0,1,0,(0, 0, 1))
  949. t(-2,0,1,1,(0, 0, 1))
  950. t(-2,0,1,5,(3, 0, 1))
  951. t(-2,0,1,10,(8, 0, 1))
  952. t(-2,0,1,100,(98, 0, 1))
  953. t(-2,0,5,-100,(-100, -100, 5))
  954. t(-2,0,5,-15,(-15, -15, 5))
  955. t(-2,0,5,-3,(-3, -3, 5))
  956. t(-2,0,5,0,(0, 0, 5))
  957. t(-2,0,5,1,(0, 0, 5))
  958. t(-2,0,5,5,(3, 0, 5))
  959. t(-2,0,5,10,(8, 0, 5))
  960. t(-2,0,5,100,(98, 0, 5))
  961. t(-2,0,20,-100,(-100, -100, 20))
  962. t(-2,0,20,-15,(-15, -15, 20))
  963. t(-2,0,20,-3,(-3, -3, 20))
  964. t(-2,0,20,0,(0, 0, 20))
  965. t(-2,0,20,1,(0, 0, 20))
  966. t(-2,0,20,5,(3, 0, 20))
  967. t(-2,0,20,10,(8, 0, 20))
  968. t(-2,0,20,100,(98, 0, 20))
  969. t(-2,1,-5,-100,(-101, -101, -5))
  970. t(-2,1,-5,-15,(-16, -16, -5))
  971. t(-2,1,-5,-3,(-4, -4, -5))
  972. t(-2,1,-5,0,(-1, -1, -5))
  973. t(-2,1,-5,1,(-1, 0, -5))
  974. t(-2,1,-5,5,(3, 1, -5))
  975. t(-2,1,-5,10,(8, 1, -5))
  976. t(-2,1,-5,100,(98, 1, -5))
  977. t(-2,1,-3,-100,(-101, -101, -3))
  978. t(-2,1,-3,-15,(-16, -16, -3))
  979. t(-2,1,-3,-3,(-4, -4, -3))
  980. t(-2,1,-3,0,(-1, -1, -3))
  981. t(-2,1,-3,1,(-1, 0, -3))
  982. t(-2,1,-3,5,(3, 1, -3))
  983. t(-2,1,-3,10,(8, 1, -3))
  984. t(-2,1,-3,100,(98, 1, -3))
  985. t(-2,1,-1,-100,(-101, -101, -1))
  986. t(-2,1,-1,-15,(-16, -16, -1))
  987. t(-2,1,-1,-3,(-4, -4, -1))
  988. t(-2,1,-1,0,(-1, -1, -1))
  989. t(-2,1,-1,1,(-1, 0, -1))
  990. t(-2,1,-1,5,(3, 1, -1))
  991. t(-2,1,-1,10,(8, 1, -1))
  992. t(-2,1,-1,100,(98, 1, -1))
  993. t(-2,1,1,-100,(-100, -100, 1))
  994. t(-2,1,1,-15,(-15, -15, 1))
  995. t(-2,1,1,-3,(-3, -3, 1))
  996. t(-2,1,1,0,(0, 0, 1))
  997. t(-2,1,1,1,(0, 1, 1))
  998. t(-2,1,1,5,(3, 1, 1))
  999. t(-2,1,1,10,(8, 1, 1))
  1000. t(-2,1,1,100,(98, 1, 1))
  1001. t(-2,1,5,-100,(-100, -100, 5))
  1002. t(-2,1,5,-15,(-15, -15, 5))
  1003. t(-2,1,5,-3,(-3, -3, 5))
  1004. t(-2,1,5,0,(0, 0, 5))
  1005. t(-2,1,5,1,(0, 1, 5))
  1006. t(-2,1,5,5,(3, 1, 5))
  1007. t(-2,1,5,10,(8, 1, 5))
  1008. t(-2,1,5,100,(98, 1, 5))
  1009. t(-2,1,20,-100,(-100, -100, 20))
  1010. t(-2,1,20,-15,(-15, -15, 20))
  1011. t(-2,1,20,-3,(-3, -3, 20))
  1012. t(-2,1,20,0,(0, 0, 20))
  1013. t(-2,1,20,1,(0, 1, 20))
  1014. t(-2,1,20,5,(3, 1, 20))
  1015. t(-2,1,20,10,(8, 1, 20))
  1016. t(-2,1,20,100,(98, 1, 20))
  1017. t(-2,6,-5,-100,(-101, -101, -5))
  1018. t(-2,6,-5,-15,(-16, -16, -5))
  1019. t(-2,6,-5,-3,(-4, -4, -5))
  1020. t(-2,6,-5,0,(-1, -1, -5))
  1021. t(-2,6,-5,1,(-1, 0, -5))
  1022. t(-2,6,-5,5,(3, 4, -5))
  1023. t(-2,6,-5,10,(8, 6, -5))
  1024. t(-2,6,-5,100,(98, 6, -5))
  1025. t(-2,6,-3,-100,(-101, -101, -3))
  1026. t(-2,6,-3,-15,(-16, -16, -3))
  1027. t(-2,6,-3,-3,(-4, -4, -3))
  1028. t(-2,6,-3,0,(-1, -1, -3))
  1029. t(-2,6,-3,1,(-1, 0, -3))
  1030. t(-2,6,-3,5,(3, 4, -3))
  1031. t(-2,6,-3,10,(8, 6, -3))
  1032. t(-2,6,-3,100,(98, 6, -3))
  1033. t(-2,6,-1,-100,(-101, -101, -1))
  1034. t(-2,6,-1,-15,(-16, -16, -1))
  1035. t(-2,6,-1,-3,(-4, -4, -1))
  1036. t(-2,6,-1,0,(-1, -1, -1))
  1037. t(-2,6,-1,1,(-1, 0, -1))
  1038. t(-2,6,-1,5,(3, 4, -1))
  1039. t(-2,6,-1,10,(8, 6, -1))
  1040. t(-2,6,-1,100,(98, 6, -1))
  1041. t(-2,6,1,-100,(-100, -100, 1))
  1042. t(-2,6,1,-15,(-15, -15, 1))
  1043. t(-2,6,1,-3,(-3, -3, 1))
  1044. t(-2,6,1,0,(0, 0, 1))
  1045. t(-2,6,1,1,(0, 1, 1))
  1046. t(-2,6,1,5,(3, 5, 1))
  1047. t(-2,6,1,10,(8, 6, 1))
  1048. t(-2,6,1,100,(98, 6, 1))
  1049. t(-2,6,5,-100,(-100, -100, 5))
  1050. t(-2,6,5,-15,(-15, -15, 5))
  1051. t(-2,6,5,-3,(-3, -3, 5))
  1052. t(-2,6,5,0,(0, 0, 5))
  1053. t(-2,6,5,1,(0, 1, 5))
  1054. t(-2,6,5,5,(3, 5, 5))
  1055. t(-2,6,5,10,(8, 6, 5))
  1056. t(-2,6,5,100,(98, 6, 5))
  1057. t(-2,6,20,-100,(-100, -100, 20))
  1058. t(-2,6,20,-15,(-15, -15, 20))
  1059. t(-2,6,20,-3,(-3, -3, 20))
  1060. t(-2,6,20,0,(0, 0, 20))
  1061. t(-2,6,20,1,(0, 1, 20))
  1062. t(-2,6,20,5,(3, 5, 20))
  1063. t(-2,6,20,10,(8, 6, 20))
  1064. t(-2,6,20,100,(98, 6, 20))
  1065. t(-2,10,-5,-100,(-101, -101, -5))
  1066. t(-2,10,-5,-15,(-16, -16, -5))
  1067. t(-2,10,-5,-3,(-4, -4, -5))
  1068. t(-2,10,-5,0,(-1, -1, -5))
  1069. t(-2,10,-5,1,(-1, 0, -5))
  1070. t(-2,10,-5,5,(3, 4, -5))
  1071. t(-2,10,-5,10,(8, 9, -5))
  1072. t(-2,10,-5,100,(98, 10, -5))
  1073. t(-2,10,-3,-100,(-101, -101, -3))
  1074. t(-2,10,-3,-15,(-16, -16, -3))
  1075. t(-2,10,-3,-3,(-4, -4, -3))
  1076. t(-2,10,-3,0,(-1, -1, -3))
  1077. t(-2,10,-3,1,(-1, 0, -3))
  1078. t(-2,10,-3,5,(3, 4, -3))
  1079. t(-2,10,-3,10,(8, 9, -3))
  1080. t(-2,10,-3,100,(98, 10, -3))
  1081. t(-2,10,-1,-100,(-101, -101, -1))
  1082. t(-2,10,-1,-15,(-16, -16, -1))
  1083. t(-2,10,-1,-3,(-4, -4, -1))
  1084. t(-2,10,-1,0,(-1, -1, -1))
  1085. t(-2,10,-1,1,(-1, 0, -1))
  1086. t(-2,10,-1,5,(3, 4, -1))
  1087. t(-2,10,-1,10,(8, 9, -1))
  1088. t(-2,10,-1,100,(98, 10, -1))
  1089. t(-2,10,1,-100,(-100, -100, 1))
  1090. t(-2,10,1,-15,(-15, -15, 1))
  1091. t(-2,10,1,-3,(-3, -3, 1))
  1092. t(-2,10,1,0,(0, 0, 1))
  1093. t(-2,10,1,1,(0, 1, 1))
  1094. t(-2,10,1,5,(3, 5, 1))
  1095. t(-2,10,1,10,(8, 10, 1))
  1096. t(-2,10,1,100,(98, 10, 1))
  1097. t(-2,10,5,-100,(-100, -100, 5))
  1098. t(-2,10,5,-15,(-15, -15, 5))
  1099. t(-2,10,5,-3,(-3, -3, 5))
  1100. t(-2,10,5,0,(0, 0, 5))
  1101. t(-2,10,5,1,(0, 1, 5))
  1102. t(-2,10,5,5,(3, 5, 5))
  1103. t(-2,10,5,10,(8, 10, 5))
  1104. t(-2,10,5,100,(98, 10, 5))
  1105. t(-2,10,20,-100,(-100, -100, 20))
  1106. t(-2,10,20,-15,(-15, -15, 20))
  1107. t(-2,10,20,-3,(-3, -3, 20))
  1108. t(-2,10,20,0,(0, 0, 20))
  1109. t(-2,10,20,1,(0, 1, 20))
  1110. t(-2,10,20,5,(3, 5, 20))
  1111. t(-2,10,20,10,(8, 10, 20))
  1112. t(-2,10,20,100,(98, 10, 20))
  1113. t(0,None,-5,-100,(-101, -1, -5))
  1114. t(0,None,-5,-15,(-16, -1, -5))
  1115. t(0,None,-5,-3,(-4, -1, -5))
  1116. t(0,None,-5,0,(-1, -1, -5))
  1117. t(0,None,-5,1,(0, -1, -5))
  1118. t(0,None,-5,5,(0, -1, -5))
  1119. t(0,None,-5,10,(0, -1, -5))
  1120. t(0,None,-5,100,(0, -1, -5))
  1121. t(0,None,-3,-100,(-101, -1, -3))
  1122. t(0,None,-3,-15,(-16, -1, -3))
  1123. t(0,None,-3,-3,(-4, -1, -3))
  1124. t(0,None,-3,0,(-1, -1, -3))
  1125. t(0,None,-3,1,(0, -1, -3))
  1126. t(0,None,-3,5,(0, -1, -3))
  1127. t(0,None,-3,10,(0, -1, -3))
  1128. t(0,None,-3,100,(0, -1, -3))
  1129. t(0,None,-1,-100,(-101, -1, -1))
  1130. t(0,None,-1,-15,(-16, -1, -1))
  1131. t(0,None,-1,-3,(-4, -1, -1))
  1132. t(0,None,-1,0,(-1, -1, -1))
  1133. t(0,None,-1,1,(0, -1, -1))
  1134. t(0,None,-1,5,(0, -1, -1))
  1135. t(0,None,-1,10,(0, -1, -1))
  1136. t(0,None,-1,100,(0, -1, -1))
  1137. t(0,None,1,-100,(-100, -100, 1))
  1138. t(0,None,1,-15,(-15, -15, 1))
  1139. t(0,None,1,-3,(-3, -3, 1))
  1140. t(0,None,1,0,(0, 0, 1))
  1141. t(0,None,1,1,(0, 1, 1))
  1142. t(0,None,1,5,(0, 5, 1))
  1143. t(0,None,1,10,(0, 10, 1))
  1144. t(0,None,1,100,(0, 100, 1))
  1145. t(0,None,5,-100,(-100, -100, 5))
  1146. t(0,None,5,-15,(-15, -15, 5))
  1147. t(0,None,5,-3,(-3, -3, 5))
  1148. t(0,None,5,0,(0, 0, 5))
  1149. t(0,None,5,1,(0, 1, 5))
  1150. t(0,None,5,5,(0, 5, 5))
  1151. t(0,None,5,10,(0, 10, 5))
  1152. t(0,None,5,100,(0, 100, 5))
  1153. t(0,None,20,-100,(-100, -100, 20))
  1154. t(0,None,20,-15,(-15, -15, 20))
  1155. t(0,None,20,-3,(-3, -3, 20))
  1156. t(0,None,20,0,(0, 0, 20))
  1157. t(0,None,20,1,(0, 1, 20))
  1158. t(0,None,20,5,(0, 5, 20))
  1159. t(0,None,20,10,(0, 10, 20))
  1160. t(0,None,20,100,(0, 100, 20))
  1161. t(0,-7,-5,-100,(-101, -101, -5))
  1162. t(0,-7,-5,-15,(-16, -16, -5))
  1163. t(0,-7,-5,-3,(-4, -4, -5))
  1164. t(0,-7,-5,0,(-1, -1, -5))
  1165. t(0,-7,-5,1,(0, -1, -5))
  1166. t(0,-7,-5,5,(0, -1, -5))
  1167. t(0,-7,-5,10,(0, 3, -5))
  1168. t(0,-7,-5,100,(0, 93, -5))
  1169. t(0,-7,-3,-100,(-101, -101, -3))
  1170. t(0,-7,-3,-15,(-16, -16, -3))
  1171. t(0,-7,-3,-3,(-4, -4, -3))
  1172. t(0,-7,-3,0,(-1, -1, -3))
  1173. t(0,-7,-3,1,(0, -1, -3))
  1174. t(0,-7,-3,5,(0, -1, -3))
  1175. t(0,-7,-3,10,(0, 3, -3))
  1176. t(0,-7,-3,100,(0, 93, -3))
  1177. t(0,-7,-1,-100,(-101, -101, -1))
  1178. t(0,-7,-1,-15,(-16, -16, -1))
  1179. t(0,-7,-1,-3,(-4, -4, -1))
  1180. t(0,-7,-1,0,(-1, -1, -1))
  1181. t(0,-7,-1,1,(0, -1, -1))
  1182. t(0,-7,-1,5,(0, -1, -1))
  1183. t(0,-7,-1,10,(0, 3, -1))
  1184. t(0,-7,-1,100,(0, 93, -1))
  1185. t(0,-7,1,-100,(-100, -100, 1))
  1186. t(0,-7,1,-15,(-15, -15, 1))
  1187. t(0,-7,1,-3,(-3, -3, 1))
  1188. t(0,-7,1,0,(0, 0, 1))
  1189. t(0,-7,1,1,(0, 0, 1))
  1190. t(0,-7,1,5,(0, 0, 1))
  1191. t(0,-7,1,10,(0, 3, 1))
  1192. t(0,-7,1,100,(0, 93, 1))
  1193. t(0,-7,5,-100,(-100, -100, 5))
  1194. t(0,-7,5,-15,(-15, -15, 5))
  1195. t(0,-7,5,-3,(-3, -3, 5))
  1196. t(0,-7,5,0,(0, 0, 5))
  1197. t(0,-7,5,1,(0, 0, 5))
  1198. t(0,-7,5,5,(0, 0, 5))
  1199. t(0,-7,5,10,(0, 3, 5))
  1200. t(0,-7,5,100,(0, 93, 5))
  1201. t(0,-7,20,-100,(-100, -100, 20))
  1202. t(0,-7,20,-15,(-15, -15, 20))
  1203. t(0,-7,20,-3,(-3, -3, 20))
  1204. t(0,-7,20,0,(0, 0, 20))
  1205. t(0,-7,20,1,(0, 0, 20))
  1206. t(0,-7,20,5,(0, 0, 20))
  1207. t(0,-7,20,10,(0, 3, 20))
  1208. t(0,-7,20,100,(0, 93, 20))
  1209. t(0,-2,-5,-100,(-101, -101, -5))
  1210. t(0,-2,-5,-15,(-16, -16, -5))
  1211. t(0,-2,-5,-3,(-4, -4, -5))
  1212. t(0,-2,-5,0,(-1, -1, -5))
  1213. t(0,-2,-5,1,(0, -1, -5))
  1214. t(0,-2,-5,5,(0, 3, -5))
  1215. t(0,-2,-5,10,(0, 8, -5))
  1216. t(0,-2,-5,100,(0, 98, -5))
  1217. t(0,-2,-3,-100,(-101, -101, -3))
  1218. t(0,-2,-3,-15,(-16, -16, -3))
  1219. t(0,-2,-3,-3,(-4, -4, -3))
  1220. t(0,-2,-3,0,(-1, -1, -3))
  1221. t(0,-2,-3,1,(0, -1, -3))
  1222. t(0,-2,-3,5,(0, 3, -3))
  1223. t(0,-2,-3,10,(0, 8, -3))
  1224. t(0,-2,-3,100,(0, 98, -3))
  1225. t(0,-2,-1,-100,(-101, -101, -1))
  1226. t(0,-2,-1,-15,(-16, -16, -1))
  1227. t(0,-2,-1,-3,(-4, -4, -1))
  1228. t(0,-2,-1,0,(-1, -1, -1))
  1229. t(0,-2,-1,1,(0, -1, -1))
  1230. t(0,-2,-1,5,(0, 3, -1))
  1231. t(0,-2,-1,10,(0, 8, -1))
  1232. t(0,-2,-1,100,(0, 98, -1))
  1233. t(0,-2,1,-100,(-100, -100, 1))
  1234. t(0,-2,1,-15,(-15, -15, 1))
  1235. t(0,-2,1,-3,(-3, -3, 1))
  1236. t(0,-2,1,0,(0, 0, 1))
  1237. t(0,-2,1,1,(0, 0, 1))
  1238. t(0,-2,1,5,(0, 3, 1))
  1239. t(0,-2,1,10,(0, 8, 1))
  1240. t(0,-2,1,100,(0, 98, 1))
  1241. t(0,-2,5,-100,(-100, -100, 5))
  1242. t(0,-2,5,-15,(-15, -15, 5))
  1243. t(0,-2,5,-3,(-3, -3, 5))
  1244. t(0,-2,5,0,(0, 0, 5))
  1245. t(0,-2,5,1,(0, 0, 5))
  1246. t(0,-2,5,5,(0, 3, 5))
  1247. t(0,-2,5,10,(0, 8, 5))
  1248. t(0,-2,5,100,(0, 98, 5))
  1249. t(0,-2,20,-100,(-100, -100, 20))
  1250. t(0,-2,20,-15,(-15, -15, 20))
  1251. t(0,-2,20,-3,(-3, -3, 20))
  1252. t(0,-2,20,0,(0, 0, 20))
  1253. t(0,-2,20,1,(0, 0, 20))
  1254. t(0,-2,20,5,(0, 3, 20))
  1255. t(0,-2,20,10,(0, 8, 20))
  1256. t(0,-2,20,100,(0, 98, 20))
  1257. t(0,0,-5,-100,(-101, -101, -5))
  1258. t(0,0,-5,-15,(-16, -16, -5))
  1259. t(0,0,-5,-3,(-4, -4, -5))
  1260. t(0,0,-5,0,(-1, -1, -5))
  1261. t(0,0,-5,1,(0, 0, -5))
  1262. t(0,0,-5,5,(0, 0, -5))
  1263. t(0,0,-5,10,(0, 0, -5))
  1264. t(0,0,-5,100,(0, 0, -5))
  1265. t(0,0,-3,-100,(-101, -101, -3))
  1266. t(0,0,-3,-15,(-16, -16, -3))
  1267. t(0,0,-3,-3,(-4, -4, -3))
  1268. t(0,0,-3,0,(-1, -1, -3))
  1269. t(0,0,-3,1,(0, 0, -3))
  1270. t(0,0,-3,5,(0, 0, -3))
  1271. t(0,0,-3,10,(0, 0, -3))
  1272. t(0,0,-3,100,(0, 0, -3))
  1273. t(0,0,-1,-100,(-101, -101, -1))
  1274. t(0,0,-1,-15,(-16, -16, -1))
  1275. t(0,0,-1,-3,(-4, -4, -1))
  1276. t(0,0,-1,0,(-1, -1, -1))
  1277. t(0,0,-1,1,(0, 0, -1))
  1278. t(0,0,-1,5,(0, 0, -1))
  1279. t(0,0,-1,10,(0, 0, -1))
  1280. t(0,0,-1,100,(0, 0, -1))
  1281. t(0,0,1,-100,(-100, -100, 1))
  1282. t(0,0,1,-15,(-15, -15, 1))
  1283. t(0,0,1,-3,(-3, -3, 1))
  1284. t(0,0,1,0,(0, 0, 1))
  1285. t(0,0,1,1,(0, 0, 1))
  1286. t(0,0,1,5,(0, 0, 1))
  1287. t(0,0,1,10,(0, 0, 1))
  1288. t(0,0,1,100,(0, 0, 1))
  1289. t(0,0,5,-100,(-100, -100, 5))
  1290. t(0,0,5,-15,(-15, -15, 5))
  1291. t(0,0,5,-3,(-3, -3, 5))
  1292. t(0,0,5,0,(0, 0, 5))
  1293. t(0,0,5,1,(0, 0, 5))
  1294. t(0,0,5,5,(0, 0, 5))
  1295. t(0,0,5,10,(0, 0, 5))
  1296. t(0,0,5,100,(0, 0, 5))
  1297. t(0,0,20,-100,(-100, -100, 20))
  1298. t(0,0,20,-15,(-15, -15, 20))
  1299. t(0,0,20,-3,(-3, -3, 20))
  1300. t(0,0,20,0,(0, 0, 20))
  1301. t(0,0,20,1,(0, 0, 20))
  1302. t(0,0,20,5,(0, 0, 20))
  1303. t(0,0,20,10,(0, 0, 20))
  1304. t(0,0,20,100,(0, 0, 20))
  1305. t(0,1,-5,-100,(-101, -101, -5))
  1306. t(0,1,-5,-15,(-16, -16, -5))
  1307. t(0,1,-5,-3,(-4, -4, -5))
  1308. t(0,1,-5,0,(-1, -1, -5))
  1309. t(0,1,-5,1,(0, 0, -5))
  1310. t(0,1,-5,5,(0, 1, -5))
  1311. t(0,1,-5,10,(0, 1, -5))
  1312. t(0,1,-5,100,(0, 1, -5))
  1313. t(0,1,-3,-100,(-101, -101, -3))
  1314. t(0,1,-3,-15,(-16, -16, -3))
  1315. t(0,1,-3,-3,(-4, -4, -3))
  1316. t(0,1,-3,0,(-1, -1, -3))
  1317. t(0,1,-3,1,(0, 0, -3))
  1318. t(0,1,-3,5,(0, 1, -3))
  1319. t(0,1,-3,10,(0, 1, -3))
  1320. t(0,1,-3,100,(0, 1, -3))
  1321. t(0,1,-1,-100,(-101, -101, -1))
  1322. t(0,1,-1,-15,(-16, -16, -1))
  1323. t(0,1,-1,-3,(-4, -4, -1))
  1324. t(0,1,-1,0,(-1, -1, -1))
  1325. t(0,1,-1,1,(0, 0, -1))
  1326. t(0,1,-1,5,(0, 1, -1))
  1327. t(0,1,-1,10,(0, 1, -1))
  1328. t(0,1,-1,100,(0, 1, -1))
  1329. t(0,1,1,-100,(-100, -100, 1))
  1330. t(0,1,1,-15,(-15, -15, 1))
  1331. t(0,1,1,-3,(-3, -3, 1))
  1332. t(0,1,1,0,(0, 0, 1))
  1333. t(0,1,1,1,(0, 1, 1))
  1334. t(0,1,1,5,(0, 1, 1))
  1335. t(0,1,1,10,(0, 1, 1))
  1336. t(0,1,1,100,(0, 1, 1))
  1337. t(0,1,5,-100,(-100, -100, 5))
  1338. t(0,1,5,-15,(-15, -15, 5))
  1339. t(0,1,5,-3,(-3, -3, 5))
  1340. t(0,1,5,0,(0, 0, 5))
  1341. t(0,1,5,1,(0, 1, 5))
  1342. t(0,1,5,5,(0, 1, 5))
  1343. t(0,1,5,10,(0, 1, 5))
  1344. t(0,1,5,100,(0, 1, 5))
  1345. t(0,1,20,-100,(-100, -100, 20))
  1346. t(0,1,20,-15,(-15, -15, 20))
  1347. t(0,1,20,-3,(-3, -3, 20))
  1348. t(0,1,20,0,(0, 0, 20))
  1349. t(0,1,20,1,(0, 1, 20))
  1350. t(0,1,20,5,(0, 1, 20))
  1351. t(0,1,20,10,(0, 1, 20))
  1352. t(0,1,20,100,(0, 1, 20))
  1353. t(0,6,-5,-100,(-101, -101, -5))
  1354. t(0,6,-5,-15,(-16, -16, -5))
  1355. t(0,6,-5,-3,(-4, -4, -5))
  1356. t(0,6,-5,0,(-1, -1, -5))
  1357. t(0,6,-5,1,(0, 0, -5))
  1358. t(0,6,-5,5,(0, 4, -5))
  1359. t(0,6,-5,10,(0, 6, -5))
  1360. t(0,6,-5,100,(0, 6, -5))
  1361. t(0,6,-3,-100,(-101, -101, -3))
  1362. t(0,6,-3,-15,(-16, -16, -3))
  1363. t(0,6,-3,-3,(-4, -4, -3))
  1364. t(0,6,-3,0,(-1, -1, -3))
  1365. t(0,6,-3,1,(0, 0, -3))
  1366. t(0,6,-3,5,(0, 4, -3))
  1367. t(0,6,-3,10,(0, 6, -3))
  1368. t(0,6,-3,100,(0, 6, -3))
  1369. t(0,6,-1,-100,(-101, -101, -1))
  1370. t(0,6,-1,-15,(-16, -16, -1))
  1371. t(0,6,-1,-3,(-4, -4, -1))
  1372. t(0,6,-1,0,(-1, -1, -1))
  1373. t(0,6,-1,1,(0, 0, -1))
  1374. t(0,6,-1,5,(0, 4, -1))
  1375. t(0,6,-1,10,(0, 6, -1))
  1376. t(0,6,-1,100,(0, 6, -1))
  1377. t(0,6,1,-100,(-100, -100, 1))
  1378. t(0,6,1,-15,(-15, -15, 1))
  1379. t(0,6,1,-3,(-3, -3, 1))
  1380. t(0,6,1,0,(0, 0, 1))
  1381. t(0,6,1,1,(0, 1, 1))
  1382. t(0,6,1,5,(0, 5, 1))
  1383. t(0,6,1,10,(0, 6, 1))
  1384. t(0,6,1,100,(0, 6, 1))
  1385. t(0,6,5,-100,(-100, -100, 5))
  1386. t(0,6,5,-15,(-15, -15, 5))
  1387. t(0,6,5,-3,(-3, -3, 5))
  1388. t(0,6,5,0,(0, 0, 5))
  1389. t(0,6,5,1,(0, 1, 5))
  1390. t(0,6,5,5,(0, 5, 5))
  1391. t(0,6,5,10,(0, 6, 5))
  1392. t(0,6,5,100,(0, 6, 5))
  1393. t(0,6,20,-100,(-100, -100, 20))
  1394. t(0,6,20,-15,(-15, -15, 20))
  1395. t(0,6,20,-3,(-3, -3, 20))
  1396. t(0,6,20,0,(0, 0, 20))
  1397. t(0,6,20,1,(0, 1, 20))
  1398. t(0,6,20,5,(0, 5, 20))
  1399. t(0,6,20,10,(0, 6, 20))
  1400. t(0,6,20,100,(0, 6, 20))
  1401. t(0,10,-5,-100,(-101, -101, -5))
  1402. t(0,10,-5,-15,(-16, -16, -5))
  1403. t(0,10,-5,-3,(-4, -4, -5))
  1404. t(0,10,-5,0,(-1, -1, -5))
  1405. t(0,10,-5,1,(0, 0, -5))
  1406. t(0,10,-5,5,(0, 4, -5))
  1407. t(0,10,-5,10,(0, 9, -5))
  1408. t(0,10,-5,100,(0, 10, -5))
  1409. t(0,10,-3,-100,(-101, -101, -3))
  1410. t(0,10,-3,-15,(-16, -16, -3))
  1411. t(0,10,-3,-3,(-4, -4, -3))
  1412. t(0,10,-3,0,(-1, -1, -3))
  1413. t(0,10,-3,1,(0, 0, -3))
  1414. t(0,10,-3,5,(0, 4, -3))
  1415. t(0,10,-3,10,(0, 9, -3))
  1416. t(0,10,-3,100,(0, 10, -3))
  1417. t(0,10,-1,-100,(-101, -101, -1))
  1418. t(0,10,-1,-15,(-16, -16, -1))
  1419. t(0,10,-1,-3,(-4, -4, -1))
  1420. t(0,10,-1,0,(-1, -1, -1))
  1421. t(0,10,-1,1,(0, 0, -1))
  1422. t(0,10,-1,5,(0, 4, -1))
  1423. t(0,10,-1,10,(0, 9, -1))
  1424. t(0,10,-1,100,(0, 10, -1))
  1425. t(0,10,1,-100,(-100, -100, 1))
  1426. t(0,10,1,-15,(-15, -15, 1))
  1427. t(0,10,1,-3,(-3, -3, 1))
  1428. t(0,10,1,0,(0, 0, 1))
  1429. t(0,10,1,1,(0, 1, 1))
  1430. t(0,10,1,5,(0, 5, 1))
  1431. t(0,10,1,10,(0, 10, 1))
  1432. t(0,10,1,100,(0, 10, 1))
  1433. t(0,10,5,-100,(-100, -100, 5))
  1434. t(0,10,5,-15,(-15, -15, 5))
  1435. t(0,10,5,-3,(-3, -3, 5))
  1436. t(0,10,5,0,(0, 0, 5))
  1437. t(0,10,5,1,(0, 1, 5))
  1438. t(0,10,5,5,(0, 5, 5))
  1439. t(0,10,5,10,(0, 10, 5))
  1440. t(0,10,5,100,(0, 10, 5))
  1441. t(0,10,20,-100,(-100, -100, 20))
  1442. t(0,10,20,-15,(-15, -15, 20))
  1443. t(0,10,20,-3,(-3, -3, 20))
  1444. t(0,10,20,0,(0, 0, 20))
  1445. t(0,10,20,1,(0, 1, 20))
  1446. t(0,10,20,5,(0, 5, 20))
  1447. t(0,10,20,10,(0, 10, 20))
  1448. t(0,10,20,100,(0, 10, 20))
  1449. t(1,None,-5,-100,(-101, -1, -5))
  1450. t(1,None,-5,-15,(-16, -1, -5))
  1451. t(1,None,-5,-3,(-4, -1, -5))
  1452. t(1,None,-5,0,(-1, -1, -5))
  1453. t(1,None,-5,1,(0, -1, -5))
  1454. t(1,None,-5,5,(1, -1, -5))
  1455. t(1,None,-5,10,(1, -1, -5))
  1456. t(1,None,-5,100,(1, -1, -5))
  1457. t(1,None,-3,-100,(-101, -1, -3))
  1458. t(1,None,-3,-15,(-16, -1, -3))
  1459. t(1,None,-3,-3,(-4, -1, -3))
  1460. t(1,None,-3,0,(-1, -1, -3))
  1461. t(1,None,-3,1,(0, -1, -3))
  1462. t(1,None,-3,5,(1, -1, -3))
  1463. t(1,None,-3,10,(1, -1, -3))
  1464. t(1,None,-3,100,(1, -1, -3))
  1465. t(1,None,-1,-100,(-101, -1, -1))
  1466. t(1,None,-1,-15,(-16, -1, -1))
  1467. t(1,None,-1,-3,(-4, -1, -1))
  1468. t(1,None,-1,0,(-1, -1, -1))
  1469. t(1,None,-1,1,(0, -1, -1))
  1470. t(1,None,-1,5,(1, -1, -1))
  1471. t(1,None,-1,10,(1, -1, -1))
  1472. t(1,None,-1,100,(1, -1, -1))
  1473. t(1,None,1,-100,(-100, -100, 1))
  1474. t(1,None,1,-15,(-15, -15, 1))
  1475. t(1,None,1,-3,(-3, -3, 1))
  1476. t(1,None,1,0,(0, 0, 1))
  1477. t(1,None,1,1,(1, 1, 1))
  1478. t(1,None,1,5,(1, 5, 1))
  1479. t(1,None,1,10,(1, 10, 1))
  1480. t(1,None,1,100,(1, 100, 1))
  1481. t(1,None,5,-100,(-100, -100, 5))
  1482. t(1,None,5,-15,(-15, -15, 5))
  1483. t(1,None,5,-3,(-3, -3, 5))
  1484. t(1,None,5,0,(0, 0, 5))
  1485. t(1,None,5,1,(1, 1, 5))
  1486. t(1,None,5,5,(1, 5, 5))
  1487. t(1,None,5,10,(1, 10, 5))
  1488. t(1,None,5,100,(1, 100, 5))
  1489. t(1,None,20,-100,(-100, -100, 20))
  1490. t(1,None,20,-15,(-15, -15, 20))
  1491. t(1,None,20,-3,(-3, -3, 20))
  1492. t(1,None,20,0,(0, 0, 20))
  1493. t(1,None,20,1,(1, 1, 20))
  1494. t(1,None,20,5,(1, 5, 20))
  1495. t(1,None,20,10,(1, 10, 20))
  1496. t(1,None,20,100,(1, 100, 20))
  1497. t(1,-7,-5,-100,(-101, -101, -5))
  1498. t(1,-7,-5,-15,(-16, -16, -5))
  1499. t(1,-7,-5,-3,(-4, -4, -5))
  1500. t(1,-7,-5,0,(-1, -1, -5))
  1501. t(1,-7,-5,1,(0, -1, -5))
  1502. t(1,-7,-5,5,(1, -1, -5))
  1503. t(1,-7,-5,10,(1, 3, -5))
  1504. t(1,-7,-5,100,(1, 93, -5))
  1505. t(1,-7,-3,-100,(-101, -101, -3))
  1506. t(1,-7,-3,-15,(-16, -16, -3))
  1507. t(1,-7,-3,-3,(-4, -4, -3))
  1508. t(1,-7,-3,0,(-1, -1, -3))
  1509. t(1,-7,-3,1,(0, -1, -3))
  1510. t(1,-7,-3,5,(1, -1, -3))
  1511. t(1,-7,-3,10,(1, 3, -3))
  1512. t(1,-7,-3,100,(1, 93, -3))
  1513. t(1,-7,-1,-100,(-101, -101, -1))
  1514. t(1,-7,-1,-15,(-16, -16, -1))
  1515. t(1,-7,-1,-3,(-4, -4, -1))
  1516. t(1,-7,-1,0,(-1, -1, -1))
  1517. t(1,-7,-1,1,(0, -1, -1))
  1518. t(1,-7,-1,5,(1, -1, -1))
  1519. t(1,-7,-1,10,(1, 3, -1))
  1520. t(1,-7,-1,100,(1, 93, -1))
  1521. t(1,-7,1,-100,(-100, -100, 1))
  1522. t(1,-7,1,-15,(-15, -15, 1))
  1523. t(1,-7,1,-3,(-3, -3, 1))
  1524. t(1,-7,1,0,(0, 0, 1))
  1525. t(1,-7,1,1,(1, 0, 1))
  1526. t(1,-7,1,5,(1, 0, 1))
  1527. t(1,-7,1,10,(1, 3, 1))
  1528. t(1,-7,1,100,(1, 93, 1))
  1529. t(1,-7,5,-100,(-100, -100, 5))
  1530. t(1,-7,5,-15,(-15, -15, 5))
  1531. t(1,-7,5,-3,(-3, -3, 5))
  1532. t(1,-7,5,0,(0, 0, 5))
  1533. t(1,-7,5,1,(1, 0, 5))
  1534. t(1,-7,5,5,(1, 0, 5))
  1535. t(1,-7,5,10,(1, 3, 5))
  1536. t(1,-7,5,100,(1, 93, 5))
  1537. t(1,-7,20,-100,(-100, -100, 20))
  1538. t(1,-7,20,-15,(-15, -15, 20))
  1539. t(1,-7,20,-3,(-3, -3, 20))
  1540. t(1,-7,20,0,(0, 0, 20))
  1541. t(1,-7,20,1,(1, 0, 20))
  1542. t(1,-7,20,5,(1, 0, 20))
  1543. t(1,-7,20,10,(1, 3, 20))
  1544. t(1,-7,20,100,(1, 93, 20))
  1545. t(1,-2,-5,-100,(-101, -101, -5))
  1546. t(1,-2,-5,-15,(-16, -16, -5))
  1547. t(1,-2,-5,-3,(-4, -4, -5))
  1548. t(1,-2,-5,0,(-1, -1, -5))
  1549. t(1,-2,-5,1,(0, -1, -5))
  1550. t(1,-2,-5,5,(1, 3, -5))
  1551. t(1,-2,-5,10,(1, 8, -5))
  1552. t(1,-2,-5,100,(1, 98, -5))
  1553. t(1,-2,-3,-100,(-101, -101, -3))
  1554. t(1,-2,-3,-15,(-16, -16, -3))
  1555. t(1,-2,-3,-3,(-4, -4, -3))
  1556. t(1,-2,-3,0,(-1, -1, -3))
  1557. t(1,-2,-3,1,(0, -1, -3))
  1558. t(1,-2,-3,5,(1, 3, -3))
  1559. t(1,-2,-3,10,(1, 8, -3))
  1560. t(1,-2,-3,100,(1, 98, -3))
  1561. t(1,-2,-1,-100,(-101, -101, -1))
  1562. t(1,-2,-1,-15,(-16, -16, -1))
  1563. t(1,-2,-1,-3,(-4, -4, -1))
  1564. t(1,-2,-1,0,(-1, -1, -1))
  1565. t(1,-2,-1,1,(0, -1, -1))
  1566. t(1,-2,-1,5,(1, 3, -1))
  1567. t(1,-2,-1,10,(1, 8, -1))
  1568. t(1,-2,-1,100,(1, 98, -1))
  1569. t(1,-2,1,-100,(-100, -100, 1))
  1570. t(1,-2,1,-15,(-15, -15, 1))
  1571. t(1,-2,1,-3,(-3, -3, 1))
  1572. t(1,-2,1,0,(0, 0, 1))
  1573. t(1,-2,1,1,(1, 0, 1))
  1574. t(1,-2,1,5,(1, 3, 1))
  1575. t(1,-2,1,10,(1, 8, 1))
  1576. t(1,-2,1,100,(1, 98, 1))
  1577. t(1,-2,5,-100,(-100, -100, 5))
  1578. t(1,-2,5,-15,(-15, -15, 5))
  1579. t(1,-2,5,-3,(-3, -3, 5))
  1580. t(1,-2,5,0,(0, 0, 5))
  1581. t(1,-2,5,1,(1, 0, 5))
  1582. t(1,-2,5,5,(1, 3, 5))
  1583. t(1,-2,5,10,(1, 8, 5))
  1584. t(1,-2,5,100,(1, 98, 5))
  1585. t(1,-2,20,-100,(-100, -100, 20))
  1586. t(1,-2,20,-15,(-15, -15, 20))
  1587. t(1,-2,20,-3,(-3, -3, 20))
  1588. t(1,-2,20,0,(0, 0, 20))
  1589. t(1,-2,20,1,(1, 0, 20))
  1590. t(1,-2,20,5,(1, 3, 20))
  1591. t(1,-2,20,10,(1, 8, 20))
  1592. t(1,-2,20,100,(1, 98, 20))
  1593. t(1,0,-5,-100,(-101, -101, -5))
  1594. t(1,0,-5,-15,(-16, -16, -5))
  1595. t(1,0,-5,-3,(-4, -4, -5))
  1596. t(1,0,-5,0,(-1, -1, -5))
  1597. t(1,0,-5,1,(0, 0, -5))
  1598. t(1,0,-5,5,(1, 0, -5))
  1599. t(1,0,-5,10,(1, 0, -5))
  1600. t(1,0,-5,100,(1, 0, -5))
  1601. t(1,0,-3,-100,(-101, -101, -3))
  1602. t(1,0,-3,-15,(-16, -16, -3))
  1603. t(1,0,-3,-3,(-4, -4, -3))
  1604. t(1,0,-3,0,(-1, -1, -3))
  1605. t(1,0,-3,1,(0, 0, -3))
  1606. t(1,0,-3,5,(1, 0, -3))
  1607. t(1,0,-3,10,(1, 0, -3))
  1608. t(1,0,-3,100,(1, 0, -3))
  1609. t(1,0,-1,-100,(-101, -101, -1))
  1610. t(1,0,-1,-15,(-16, -16, -1))
  1611. t(1,0,-1,-3,(-4, -4, -1))
  1612. t(1,0,-1,0,(-1, -1, -1))
  1613. t(1,0,-1,1,(0, 0, -1))
  1614. t(1,0,-1,5,(1, 0, -1))
  1615. t(1,0,-1,10,(1, 0, -1))
  1616. t(1,0,-1,100,(1, 0, -1))
  1617. t(1,0,1,-100,(-100, -100, 1))
  1618. t(1,0,1,-15,(-15, -15, 1))
  1619. t(1,0,1,-3,(-3, -3, 1))
  1620. t(1,0,1,0,(0, 0, 1))
  1621. t(1,0,1,1,(1, 0, 1))
  1622. t(1,0,1,5,(1, 0, 1))
  1623. t(1,0,1,10,(1, 0, 1))
  1624. t(1,0,1,100,(1, 0, 1))
  1625. t(1,0,5,-100,(-100, -100, 5))
  1626. t(1,0,5,-15,(-15, -15, 5))
  1627. t(1,0,5,-3,(-3, -3, 5))
  1628. t(1,0,5,0,(0, 0, 5))
  1629. t(1,0,5,1,(1, 0, 5))
  1630. t(1,0,5,5,(1, 0, 5))
  1631. t(1,0,5,10,(1, 0, 5))
  1632. t(1,0,5,100,(1, 0, 5))
  1633. t(1,0,20,-100,(-100, -100, 20))
  1634. t(1,0,20,-15,(-15, -15, 20))
  1635. t(1,0,20,-3,(-3, -3, 20))
  1636. t(1,0,20,0,(0, 0, 20))
  1637. t(1,0,20,1,(1, 0, 20))
  1638. t(1,0,20,5,(1, 0, 20))
  1639. t(1,0,20,10,(1, 0, 20))
  1640. t(1,0,20,100,(1, 0, 20))
  1641. t(1,1,-5,-100,(-101, -101, -5))
  1642. t(1,1,-5,-15,(-16, -16, -5))
  1643. t(1,1,-5,-3,(-4, -4, -5))
  1644. t(1,1,-5,0,(-1, -1, -5))
  1645. t(1,1,-5,1,(0, 0, -5))
  1646. t(1,1,-5,5,(1, 1, -5))
  1647. t(1,1,-5,10,(1, 1, -5))
  1648. t(1,1,-5,100,(1, 1, -5))
  1649. t(1,1,-3,-100,(-101, -101, -3))
  1650. t(1,1,-3,-15,(-16, -16, -3))
  1651. t(1,1,-3,-3,(-4, -4, -3))
  1652. t(1,1,-3,0,(-1, -1, -3))
  1653. t(1,1,-3,1,(0, 0, -3))
  1654. t(1,1,-3,5,(1, 1, -3))
  1655. t(1,1,-3,10,(1, 1, -3))
  1656. t(1,1,-3,100,(1, 1, -3))
  1657. t(1,1,-1,-100,(-101, -101, -1))
  1658. t(1,1,-1,-15,(-16, -16, -1))
  1659. t(1,1,-1,-3,(-4, -4, -1))
  1660. t(1,1,-1,0,(-1, -1, -1))
  1661. t(1,1,-1,1,(0, 0, -1))
  1662. t(1,1,-1,5,(1, 1, -1))
  1663. t(1,1,-1,10,(1, 1, -1))
  1664. t(1,1,-1,100,(1, 1, -1))
  1665. t(1,1,1,-100,(-100, -100, 1))
  1666. t(1,1,1,-15,(-15, -15, 1))
  1667. t(1,1,1,-3,(-3, -3, 1))
  1668. t(1,1,1,0,(0, 0, 1))
  1669. t(1,1,1,1,(1, 1, 1))
  1670. t(1,1,1,5,(1, 1, 1))
  1671. t(1,1,1,10,(1, 1, 1))
  1672. t(1,1,1,100,(1, 1, 1))
  1673. t(1,1,5,-100,(-100, -100, 5))
  1674. t(1,1,5,-15,(-15, -15, 5))
  1675. t(1,1,5,-3,(-3, -3, 5))
  1676. t(1,1,5,0,(0, 0, 5))
  1677. t(1,1,5,1,(1, 1, 5))
  1678. t(1,1,5,5,(1, 1, 5))
  1679. t(1,1,5,10,(1, 1, 5))
  1680. t(1,1,5,100,(1, 1, 5))
  1681. t(1,1,20,-100,(-100, -100, 20))
  1682. t(1,1,20,-15,(-15, -15, 20))
  1683. t(1,1,20,-3,(-3, -3, 20))
  1684. t(1,1,20,0,(0, 0, 20))
  1685. t(1,1,20,1,(1, 1, 20))
  1686. t(1,1,20,5,(1, 1, 20))
  1687. t(1,1,20,10,(1, 1, 20))
  1688. t(1,1,20,100,(1, 1, 20))
  1689. t(1,6,-5,-100,(-101, -101, -5))
  1690. t(1,6,-5,-15,(-16, -16, -5))
  1691. t(1,6,-5,-3,(-4, -4, -5))
  1692. t(1,6,-5,0,(-1, -1, -5))
  1693. t(1,6,-5,1,(0, 0, -5))
  1694. t(1,6,-5,5,(1, 4, -5))
  1695. t(1,6,-5,10,(1, 6, -5))
  1696. t(1,6,-5,100,(1, 6, -5))
  1697. t(1,6,-3,-100,(-101, -101, -3))
  1698. t(1,6,-3,-15,(-16, -16, -3))
  1699. t(1,6,-3,-3,(-4, -4, -3))
  1700. t(1,6,-3,0,(-1, -1, -3))
  1701. t(1,6,-3,1,(0, 0, -3))
  1702. t(1,6,-3,5,(1, 4, -3))
  1703. t(1,6,-3,10,(1, 6, -3))
  1704. t(1,6,-3,100,(1, 6, -3))
  1705. t(1,6,-1,-100,(-101, -101, -1))
  1706. t(1,6,-1,-15,(-16, -16, -1))
  1707. t(1,6,-1,-3,(-4, -4, -1))
  1708. t(1,6,-1,0,(-1, -1, -1))
  1709. t(1,6,-1,1,(0, 0, -1))
  1710. t(1,6,-1,5,(1, 4, -1))
  1711. t(1,6,-1,10,(1, 6, -1))
  1712. t(1,6,-1,100,(1, 6, -1))
  1713. t(1,6,1,-100,(-100, -100, 1))
  1714. t(1,6,1,-15,(-15, -15, 1))
  1715. t(1,6,1,-3,(-3, -3, 1))
  1716. t(1,6,1,0,(0, 0, 1))
  1717. t(1,6,1,1,(1, 1, 1))
  1718. t(1,6,1,5,(1, 5, 1))
  1719. t(1,6,1,10,(1, 6, 1))
  1720. t(1,6,1,100,(1, 6, 1))
  1721. t(1,6,5,-100,(-100, -100, 5))
  1722. t(1,6,5,-15,(-15, -15, 5))
  1723. t(1,6,5,-3,(-3, -3, 5))
  1724. t(1,6,5,0,(0, 0, 5))
  1725. t(1,6,5,1,(1, 1, 5))
  1726. t(1,6,5,5,(1, 5, 5))
  1727. t(1,6,5,10,(1, 6, 5))
  1728. t(1,6,5,100,(1, 6, 5))
  1729. t(1,6,20,-100,(-100, -100, 20))
  1730. t(1,6,20,-15,(-15, -15, 20))
  1731. t(1,6,20,-3,(-3, -3, 20))
  1732. t(1,6,20,0,(0, 0, 20))
  1733. t(1,6,20,1,(1, 1, 20))
  1734. t(1,6,20,5,(1, 5, 20))
  1735. t(1,6,20,10,(1, 6, 20))
  1736. t(1,6,20,100,(1, 6, 20))
  1737. t(1,10,-5,-100,(-101, -101, -5))
  1738. t(1,10,-5,-15,(-16, -16, -5))
  1739. t(1,10,-5,-3,(-4, -4, -5))
  1740. t(1,10,-5,0,(-1, -1, -5))
  1741. t(1,10,-5,1,(0, 0, -5))
  1742. t(1,10,-5,5,(1, 4, -5))
  1743. t(1,10,-5,10,(1, 9, -5))
  1744. t(1,10,-5,100,(1, 10, -5))
  1745. t(1,10,-3,-100,(-101, -101, -3))
  1746. t(1,10,-3,-15,(-16, -16, -3))
  1747. t(1,10,-3,-3,(-4, -4, -3))
  1748. t(1,10,-3,0,(-1, -1, -3))
  1749. t(1,10,-3,1,(0, 0, -3))
  1750. t(1,10,-3,5,(1, 4, -3))
  1751. t(1,10,-3,10,(1, 9, -3))
  1752. t(1,10,-3,100,(1, 10, -3))
  1753. t(1,10,-1,-100,(-101, -101, -1))
  1754. t(1,10,-1,-15,(-16, -16, -1))
  1755. t(1,10,-1,-3,(-4, -4, -1))
  1756. t(1,10,-1,0,(-1, -1, -1))
  1757. t(1,10,-1,1,(0, 0, -1))
  1758. t(1,10,-1,5,(1, 4, -1))
  1759. t(1,10,-1,10,(1, 9, -1))
  1760. t(1,10,-1,100,(1, 10, -1))
  1761. t(1,10,1,-100,(-100, -100, 1))
  1762. t(1,10,1,-15,(-15, -15, 1))
  1763. t(1,10,1,-3,(-3, -3, 1))
  1764. t(1,10,1,0,(0, 0, 1))
  1765. t(1,10,1,1,(1, 1, 1))
  1766. t(1,10,1,5,(1, 5, 1))
  1767. t(1,10,1,10,(1, 10, 1))
  1768. t(1,10,1,100,(1, 10, 1))
  1769. t(1,10,5,-100,(-100, -100, 5))
  1770. t(1,10,5,-15,(-15, -15, 5))
  1771. t(1,10,5,-3,(-3, -3, 5))
  1772. t(1,10,5,0,(0, 0, 5))
  1773. t(1,10,5,1,(1, 1, 5))
  1774. t(1,10,5,5,(1, 5, 5))
  1775. t(1,10,5,10,(1, 10, 5))
  1776. t(1,10,5,100,(1, 10, 5))
  1777. t(1,10,20,-100,(-100, -100, 20))
  1778. t(1,10,20,-15,(-15, -15, 20))
  1779. t(1,10,20,-3,(-3, -3, 20))
  1780. t(1,10,20,0,(0, 0, 20))
  1781. t(1,10,20,1,(1, 1, 20))
  1782. t(1,10,20,5,(1, 5, 20))
  1783. t(1,10,20,10,(1, 10, 20))
  1784. t(1,10,20,100,(1, 10, 20))
  1785. t(6,None,-5,-100,(-101, -1, -5))
  1786. t(6,None,-5,-15,(-16, -1, -5))
  1787. t(6,None,-5,-3,(-4, -1, -5))
  1788. t(6,None,-5,0,(-1, -1, -5))
  1789. t(6,None,-5,1,(0, -1, -5))
  1790. t(6,None,-5,5,(4, -1, -5))
  1791. t(6,None,-5,10,(6, -1, -5))
  1792. t(6,None,-5,100,(6, -1, -5))
  1793. t(6,None,-3,-100,(-101, -1, -3))
  1794. t(6,None,-3,-15,(-16, -1, -3))
  1795. t(6,None,-3,-3,(-4, -1, -3))
  1796. t(6,None,-3,0,(-1, -1, -3))
  1797. t(6,None,-3,1,(0, -1, -3))
  1798. t(6,None,-3,5,(4, -1, -3))
  1799. t(6,None,-3,10,(6, -1, -3))
  1800. t(6,None,-3,100,(6, -1, -3))
  1801. t(6,None,-1,-100,(-101, -1, -1))
  1802. t(6,None,-1,-15,(-16, -1, -1))
  1803. t(6,None,-1,-3,(-4, -1, -1))
  1804. t(6,None,-1,0,(-1, -1, -1))
  1805. t(6,None,-1,1,(0, -1, -1))
  1806. t(6,None,-1,5,(4, -1, -1))
  1807. t(6,None,-1,10,(6, -1, -1))
  1808. t(6,None,-1,100,(6, -1, -1))
  1809. t(6,None,1,-100,(-100, -100, 1))
  1810. t(6,None,1,-15,(-15, -15, 1))
  1811. t(6,None,1,-3,(-3, -3, 1))
  1812. t(6,None,1,0,(0, 0, 1))
  1813. t(6,None,1,1,(1, 1, 1))
  1814. t(6,None,1,5,(5, 5, 1))
  1815. t(6,None,1,10,(6, 10, 1))
  1816. t(6,None,1,100,(6, 100, 1))
  1817. t(6,None,5,-100,(-100, -100, 5))
  1818. t(6,None,5,-15,(-15, -15, 5))
  1819. t(6,None,5,-3,(-3, -3, 5))
  1820. t(6,None,5,0,(0, 0, 5))
  1821. t(6,None,5,1,(1, 1, 5))
  1822. t(6,None,5,5,(5, 5, 5))
  1823. t(6,None,5,10,(6, 10, 5))
  1824. t(6,None,5,100,(6, 100, 5))
  1825. t(6,None,20,-100,(-100, -100, 20))
  1826. t(6,None,20,-15,(-15, -15, 20))
  1827. t(6,None,20,-3,(-3, -3, 20))
  1828. t(6,None,20,0,(0, 0, 20))
  1829. t(6,None,20,1,(1, 1, 20))
  1830. t(6,None,20,5,(5, 5, 20))
  1831. t(6,None,20,10,(6, 10, 20))
  1832. t(6,None,20,100,(6, 100, 20))
  1833. t(6,-7,-5,-100,(-101, -101, -5))
  1834. t(6,-7,-5,-15,(-16, -16, -5))
  1835. t(6,-7,-5,-3,(-4, -4, -5))
  1836. t(6,-7,-5,0,(-1, -1, -5))
  1837. t(6,-7,-5,1,(0, -1, -5))
  1838. t(6,-7,-5,5,(4, -1, -5))
  1839. t(6,-7,-5,10,(6, 3, -5))
  1840. t(6,-7,-5,100,(6, 93, -5))
  1841. t(6,-7,-3,-100,(-101, -101, -3))
  1842. t(6,-7,-3,-15,(-16, -16, -3))
  1843. t(6,-7,-3,-3,(-4, -4, -3))
  1844. t(6,-7,-3,0,(-1, -1, -3))
  1845. t(6,-7,-3,1,(0, -1, -3))
  1846. t(6,-7,-3,5,(4, -1, -3))
  1847. t(6,-7,-3,10,(6, 3, -3))
  1848. t(6,-7,-3,100,(6, 93, -3))
  1849. t(6,-7,-1,-100,(-101, -101, -1))
  1850. t(6,-7,-1,-15,(-16, -16, -1))
  1851. t(6,-7,-1,-3,(-4, -4, -1))
  1852. t(6,-7,-1,0,(-1, -1, -1))
  1853. t(6,-7,-1,1,(0, -1, -1))
  1854. t(6,-7,-1,5,(4, -1, -1))
  1855. t(6,-7,-1,10,(6, 3, -1))
  1856. t(6,-7,-1,100,(6, 93, -1))
  1857. t(6,-7,1,-100,(-100, -100, 1))
  1858. t(6,-7,1,-15,(-15, -15, 1))
  1859. t(6,-7,1,-3,(-3, -3, 1))
  1860. t(6,-7,1,0,(0, 0, 1))
  1861. t(6,-7,1,1,(1, 0, 1))
  1862. t(6,-7,1,5,(5, 0, 1))
  1863. t(6,-7,1,10,(6, 3, 1))
  1864. t(6,-7,1,100,(6, 93, 1))
  1865. t(6,-7,5,-100,(-100, -100, 5))
  1866. t(6,-7,5,-15,(-15, -15, 5))
  1867. t(6,-7,5,-3,(-3, -3, 5))
  1868. t(6,-7,5,0,(0, 0, 5))
  1869. t(6,-7,5,1,(1, 0, 5))
  1870. t(6,-7,5,5,(5, 0, 5))
  1871. t(6,-7,5,10,(6, 3, 5))
  1872. t(6,-7,5,100,(6, 93, 5))
  1873. t(6,-7,20,-100,(-100, -100, 20))
  1874. t(6,-7,20,-15,(-15, -15, 20))
  1875. t(6,-7,20,-3,(-3, -3, 20))
  1876. t(6,-7,20,0,(0, 0, 20))
  1877. t(6,-7,20,1,(1, 0, 20))
  1878. t(6,-7,20,5,(5, 0, 20))
  1879. t(6,-7,20,10,(6, 3, 20))
  1880. t(6,-7,20,100,(6, 93, 20))
  1881. t(6,-2,-5,-100,(-101, -101, -5))
  1882. t(6,-2,-5,-15,(-16, -16, -5))
  1883. t(6,-2,-5,-3,(-4, -4, -5))
  1884. t(6,-2,-5,0,(-1, -1, -5))
  1885. t(6,-2,-5,1,(0, -1, -5))
  1886. t(6,-2,-5,5,(4, 3, -5))
  1887. t(6,-2,-5,10,(6, 8, -5))
  1888. t(6,-2,-5,100,(6, 98, -5))
  1889. t(6,-2,-3,-100,(-101, -101, -3))
  1890. t(6,-2,-3,-15,(-16, -16, -3))
  1891. t(6,-2,-3,-3,(-4, -4, -3))
  1892. t(6,-2,-3,0,(-1, -1, -3))
  1893. t(6,-2,-3,1,(0, -1, -3))
  1894. t(6,-2,-3,5,(4, 3, -3))
  1895. t(6,-2,-3,10,(6, 8, -3))
  1896. t(6,-2,-3,100,(6, 98, -3))
  1897. t(6,-2,-1,-100,(-101, -101, -1))
  1898. t(6,-2,-1,-15,(-16, -16, -1))
  1899. t(6,-2,-1,-3,(-4, -4, -1))
  1900. t(6,-2,-1,0,(-1, -1, -1))
  1901. t(6,-2,-1,1,(0, -1, -1))
  1902. t(6,-2,-1,5,(4, 3, -1))
  1903. t(6,-2,-1,10,(6, 8, -1))
  1904. t(6,-2,-1,100,(6, 98, -1))
  1905. t(6,-2,1,-100,(-100, -100, 1))
  1906. t(6,-2,1,-15,(-15, -15, 1))
  1907. t(6,-2,1,-3,(-3, -3, 1))
  1908. t(6,-2,1,0,(0, 0, 1))
  1909. t(6,-2,1,1,(1, 0, 1))
  1910. t(6,-2,1,5,(5, 3, 1))
  1911. t(6,-2,1,10,(6, 8, 1))
  1912. t(6,-2,1,100,(6, 98, 1))
  1913. t(6,-2,5,-100,(-100, -100, 5))
  1914. t(6,-2,5,-15,(-15, -15, 5))
  1915. t(6,-2,5,-3,(-3, -3, 5))
  1916. t(6,-2,5,0,(0, 0, 5))
  1917. t(6,-2,5,1,(1, 0, 5))
  1918. t(6,-2,5,5,(5, 3, 5))
  1919. t(6,-2,5,10,(6, 8, 5))
  1920. t(6,-2,5,100,(6, 98, 5))
  1921. t(6,-2,20,-100,(-100, -100, 20))
  1922. t(6,-2,20,-15,(-15, -15, 20))
  1923. t(6,-2,20,-3,(-3, -3, 20))
  1924. t(6,-2,20,0,(0, 0, 20))
  1925. t(6,-2,20,1,(1, 0, 20))
  1926. t(6,-2,20,5,(5, 3, 20))
  1927. t(6,-2,20,10,(6, 8, 20))
  1928. t(6,-2,20,100,(6, 98, 20))
  1929. t(6,0,-5,-100,(-101, -101, -5))
  1930. t(6,0,-5,-15,(-16, -16, -5))
  1931. t(6,0,-5,-3,(-4, -4, -5))
  1932. t(6,0,-5,0,(-1, -1, -5))
  1933. t(6,0,-5,1,(0, 0, -5))
  1934. t(6,0,-5,5,(4, 0, -5))
  1935. t(6,0,-5,10,(6, 0, -5))
  1936. t(6,0,-5,100,(6, 0, -5))
  1937. t(6,0,-3,-100,(-101, -101, -3))
  1938. t(6,0,-3,-15,(-16, -16, -3))
  1939. t(6,0,-3,-3,(-4, -4, -3))
  1940. t(6,0,-3,0,(-1, -1, -3))
  1941. t(6,0,-3,1,(0, 0, -3))
  1942. t(6,0,-3,5,(4, 0, -3))
  1943. t(6,0,-3,10,(6, 0, -3))
  1944. t(6,0,-3,100,(6, 0, -3))
  1945. t(6,0,-1,-100,(-101, -101, -1))
  1946. t(6,0,-1,-15,(-16, -16, -1))
  1947. t(6,0,-1,-3,(-4, -4, -1))
  1948. t(6,0,-1,0,(-1, -1, -1))
  1949. t(6,0,-1,1,(0, 0, -1))
  1950. t(6,0,-1,5,(4, 0, -1))
  1951. t(6,0,-1,10,(6, 0, -1))
  1952. t(6,0,-1,100,(6, 0, -1))
  1953. t(6,0,1,-100,(-100, -100, 1))
  1954. t(6,0,1,-15,(-15, -15, 1))
  1955. t(6,0,1,-3,(-3, -3, 1))
  1956. t(6,0,1,0,(0, 0, 1))
  1957. t(6,0,1,1,(1, 0, 1))
  1958. t(6,0,1,5,(5, 0, 1))
  1959. t(6,0,1,10,(6, 0, 1))
  1960. t(6,0,1,100,(6, 0, 1))
  1961. t(6,0,5,-100,(-100, -100, 5))
  1962. t(6,0,5,-15,(-15, -15, 5))
  1963. t(6,0,5,-3,(-3, -3, 5))
  1964. t(6,0,5,0,(0, 0, 5))
  1965. t(6,0,5,1,(1, 0, 5))
  1966. t(6,0,5,5,(5, 0, 5))
  1967. t(6,0,5,10,(6, 0, 5))
  1968. t(6,0,5,100,(6, 0, 5))
  1969. t(6,0,20,-100,(-100, -100, 20))
  1970. t(6,0,20,-15,(-15, -15, 20))
  1971. t(6,0,20,-3,(-3, -3, 20))
  1972. t(6,0,20,0,(0, 0, 20))
  1973. t(6,0,20,1,(1, 0, 20))
  1974. t(6,0,20,5,(5, 0, 20))
  1975. t(6,0,20,10,(6, 0, 20))
  1976. t(6,0,20,100,(6, 0, 20))
  1977. t(6,1,-5,-100,(-101, -101, -5))
  1978. t(6,1,-5,-15,(-16, -16, -5))
  1979. t(6,1,-5,-3,(-4, -4, -5))
  1980. t(6,1,-5,0,(-1, -1, -5))
  1981. t(6,1,-5,1,(0, 0, -5))
  1982. t(6,1,-5,5,(4, 1, -5))
  1983. t(6,1,-5,10,(6, 1, -5))
  1984. t(6,1,-5,100,(6, 1, -5))
  1985. t(6,1,-3,-100,(-101, -101, -3))
  1986. t(6,1,-3,-15,(-16, -16, -3))
  1987. t(6,1,-3,-3,(-4, -4, -3))
  1988. t(6,1,-3,0,(-1, -1, -3))
  1989. t(6,1,-3,1,(0, 0, -3))
  1990. t(6,1,-3,5,(4, 1, -3))
  1991. t(6,1,-3,10,(6, 1, -3))
  1992. t(6,1,-3,100,(6, 1, -3))
  1993. t(6,1,-1,-100,(-101, -101, -1))
  1994. t(6,1,-1,-15,(-16, -16, -1))
  1995. t(6,1,-1,-3,(-4, -4, -1))
  1996. t(6,1,-1,0,(-1, -1, -1))
  1997. t(6,1,-1,1,(0, 0, -1))
  1998. t(6,1,-1,5,(4, 1, -1))
  1999. t(6,1,-1,10,(6, 1, -1))
  2000. t(6,1,-1,100,(6, 1, -1))
  2001. t(6,1,1,-100,(-100, -100, 1))
  2002. t(6,1,1,-15,(-15, -15, 1))
  2003. t(6,1,1,-3,(-3, -3, 1))
  2004. t(6,1,1,0,(0, 0, 1))
  2005. t(6,1,1,1,(1, 1, 1))
  2006. t(6,1,1,5,(5, 1, 1))
  2007. t(6,1,1,10,(6, 1, 1))
  2008. t(6,1,1,100,(6, 1, 1))
  2009. t(6,1,5,-100,(-100, -100, 5))
  2010. t(6,1,5,-15,(-15, -15, 5))
  2011. t(6,1,5,-3,(-3, -3, 5))
  2012. t(6,1,5,0,(0, 0, 5))
  2013. t(6,1,5,1,(1, 1, 5))
  2014. t(6,1,5,5,(5, 1, 5))
  2015. t(6,1,5,10,(6, 1, 5))
  2016. t(6,1,5,100,(6, 1, 5))
  2017. t(6,1,20,-100,(-100, -100, 20))
  2018. t(6,1,20,-15,(-15, -15, 20))
  2019. t(6,1,20,-3,(-3, -3, 20))
  2020. t(6,1,20,0,(0, 0, 20))
  2021. t(6,1,20,1,(1, 1, 20))
  2022. t(6,1,20,5,(5, 1, 20))
  2023. t(6,1,20,10,(6, 1, 20))
  2024. t(6,1,20,100,(6, 1, 20))
  2025. t(6,6,-5,-100,(-101, -101, -5))
  2026. t(6,6,-5,-15,(-16, -16, -5))
  2027. t(6,6,-5,-3,(-4, -4, -5))
  2028. t(6,6,-5,0,(-1, -1, -5))
  2029. t(6,6,-5,1,(0, 0, -5))
  2030. t(6,6,-5,5,(4, 4, -5))
  2031. t(6,6,-5,10,(6, 6, -5))
  2032. t(6,6,-5,100,(6, 6, -5))
  2033. t(6,6,-3,-100,(-101, -101, -3))
  2034. t(6,6,-3,-15,(-16, -16, -3))
  2035. t(6,6,-3,-3,(-4, -4, -3))
  2036. t(6,6,-3,0,(-1, -1, -3))
  2037. t(6,6,-3,1,(0, 0, -3))
  2038. t(6,6,-3,5,(4, 4, -3))
  2039. t(6,6,-3,10,(6, 6, -3))
  2040. t(6,6,-3,100,(6, 6, -3))
  2041. t(6,6,-1,-100,(-101, -101, -1))
  2042. t(6,6,-1,-15,(-16, -16, -1))
  2043. t(6,6,-1,-3,(-4, -4, -1))
  2044. t(6,6,-1,0,(-1, -1, -1))
  2045. t(6,6,-1,1,(0, 0, -1))
  2046. t(6,6,-1,5,(4, 4, -1))
  2047. t(6,6,-1,10,(6, 6, -1))
  2048. t(6,6,-1,100,(6, 6, -1))
  2049. t(6,6,1,-100,(-100, -100, 1))
  2050. t(6,6,1,-15,(-15, -15, 1))
  2051. t(6,6,1,-3,(-3, -3, 1))
  2052. t(6,6,1,0,(0, 0, 1))
  2053. t(6,6,1,1,(1, 1, 1))
  2054. t(6,6,1,5,(5, 5, 1))
  2055. t(6,6,1,10,(6, 6, 1))
  2056. t(6,6,1,100,(6, 6, 1))
  2057. t(6,6,5,-100,(-100, -100, 5))
  2058. t(6,6,5,-15,(-15, -15, 5))
  2059. t(6,6,5,-3,(-3, -3, 5))
  2060. t(6,6,5,0,(0, 0, 5))
  2061. t(6,6,5,1,(1, 1, 5))
  2062. t(6,6,5,5,(5, 5, 5))
  2063. t(6,6,5,10,(6, 6, 5))
  2064. t(6,6,5,100,(6, 6, 5))
  2065. t(6,6,20,-100,(-100, -100, 20))
  2066. t(6,6,20,-15,(-15, -15, 20))
  2067. t(6,6,20,-3,(-3, -3, 20))
  2068. t(6,6,20,0,(0, 0, 20))
  2069. t(6,6,20,1,(1, 1, 20))
  2070. t(6,6,20,5,(5, 5, 20))
  2071. t(6,6,20,10,(6, 6, 20))
  2072. t(6,6,20,100,(6, 6, 20))
  2073. t(6,10,-5,-100,(-101, -101, -5))
  2074. t(6,10,-5,-15,(-16, -16, -5))
  2075. t(6,10,-5,-3,(-4, -4, -5))
  2076. t(6,10,-5,0,(-1, -1, -5))
  2077. t(6,10,-5,1,(0, 0, -5))
  2078. t(6,10,-5,5,(4, 4, -5))
  2079. t(6,10,-5,10,(6, 9, -5))
  2080. t(6,10,-5,100,(6, 10, -5))
  2081. t(6,10,-3,-100,(-101, -101, -3))
  2082. t(6,10,-3,-15,(-16, -16, -3))
  2083. t(6,10,-3,-3,(-4, -4, -3))
  2084. t(6,10,-3,0,(-1, -1, -3))
  2085. t(6,10,-3,1,(0, 0, -3))
  2086. t(6,10,-3,5,(4, 4, -3))
  2087. t(6,10,-3,10,(6, 9, -3))
  2088. t(6,10,-3,100,(6, 10, -3))
  2089. t(6,10,-1,-100,(-101, -101, -1))
  2090. t(6,10,-1,-15,(-16, -16, -1))
  2091. t(6,10,-1,-3,(-4, -4, -1))
  2092. t(6,10,-1,0,(-1, -1, -1))
  2093. t(6,10,-1,1,(0, 0, -1))
  2094. t(6,10,-1,5,(4, 4, -1))
  2095. t(6,10,-1,10,(6, 9, -1))
  2096. t(6,10,-1,100,(6, 10, -1))
  2097. t(6,10,1,-100,(-100, -100, 1))
  2098. t(6,10,1,-15,(-15, -15, 1))
  2099. t(6,10,1,-3,(-3, -3, 1))
  2100. t(6,10,1,0,(0, 0, 1))
  2101. t(6,10,1,1,(1, 1, 1))
  2102. t(6,10,1,5,(5, 5, 1))
  2103. t(6,10,1,10,(6, 10, 1))
  2104. t(6,10,1,100,(6, 10, 1))
  2105. def c():
  2106. t(6,10,5,-100,(-100, -100, 5))
  2107. t(6,10,5,-15,(-15, -15, 5))
  2108. t(6,10,5,-3,(-3, -3, 5))
  2109. t(6,10,5,0,(0, 0, 5))
  2110. t(6,10,5,1,(1, 1, 5))
  2111. t(6,10,5,5,(5, 5, 5))
  2112. t(6,10,5,10,(6, 10, 5))
  2113. t(6,10,5,100,(6, 10, 5))
  2114. t(6,10,20,-100,(-100, -100, 20))
  2115. t(6,10,20,-15,(-15, -15, 20))
  2116. t(6,10,20,-3,(-3, -3, 20))
  2117. t(6,10,20,0,(0, 0, 20))
  2118. t(6,10,20,1,(1, 1, 20))
  2119. t(6,10,20,5,(5, 5, 20))
  2120. t(6,10,20,10,(6, 10, 20))
  2121. t(6,10,20,100,(6, 10, 20))
  2122. t(10,None,-5,-100,(-101, -1, -5))
  2123. t(10,None,-5,-15,(-16, -1, -5))
  2124. t(10,None,-5,-3,(-4, -1, -5))
  2125. t(10,None,-5,0,(-1, -1, -5))
  2126. t(10,None,-5,1,(0, -1, -5))
  2127. t(10,None,-5,5,(4, -1, -5))
  2128. t(10,None,-5,10,(9, -1, -5))
  2129. t(10,None,-5,100,(10, -1, -5))
  2130. t(10,None,-3,-100,(-101, -1, -3))
  2131. t(10,None,-3,-15,(-16, -1, -3))
  2132. t(10,None,-3,-3,(-4, -1, -3))
  2133. t(10,None,-3,0,(-1, -1, -3))
  2134. t(10,None,-3,1,(0, -1, -3))
  2135. t(10,None,-3,5,(4, -1, -3))
  2136. t(10,None,-3,10,(9, -1, -3))
  2137. t(10,None,-3,100,(10, -1, -3))
  2138. t(10,None,-1,-100,(-101, -1, -1))
  2139. t(10,None,-1,-15,(-16, -1, -1))
  2140. t(10,None,-1,-3,(-4, -1, -1))
  2141. t(10,None,-1,0,(-1, -1, -1))
  2142. t(10,None,-1,1,(0, -1, -1))
  2143. t(10,None,-1,5,(4, -1, -1))
  2144. t(10,None,-1,10,(9, -1, -1))
  2145. t(10,None,-1,100,(10, -1, -1))
  2146. t(10,None,1,-100,(-100, -100, 1))
  2147. t(10,None,1,-15,(-15, -15, 1))
  2148. t(10,None,1,-3,(-3, -3, 1))
  2149. t(10,None,1,0,(0, 0, 1))
  2150. t(10,None,1,1,(1, 1, 1))
  2151. t(10,None,1,5,(5, 5, 1))
  2152. t(10,None,1,10,(10, 10, 1))
  2153. t(10,None,1,100,(10, 100, 1))
  2154. t(10,None,5,-100,(-100, -100, 5))
  2155. t(10,None,5,-15,(-15, -15, 5))
  2156. t(10,None,5,-3,(-3, -3, 5))
  2157. t(10,None,5,0,(0, 0, 5))
  2158. t(10,None,5,1,(1, 1, 5))
  2159. t(10,None,5,5,(5, 5, 5))
  2160. t(10,None,5,10,(10, 10, 5))
  2161. t(10,None,5,100,(10, 100, 5))
  2162. t(10,None,20,-100,(-100, -100, 20))
  2163. t(10,None,20,-15,(-15, -15, 20))
  2164. t(10,None,20,-3,(-3, -3, 20))
  2165. t(10,None,20,0,(0, 0, 20))
  2166. t(10,None,20,1,(1, 1, 20))
  2167. t(10,None,20,5,(5, 5, 20))
  2168. t(10,None,20,10,(10, 10, 20))
  2169. t(10,None,20,100,(10, 100, 20))
  2170. t(10,-7,-5,-100,(-101, -101, -5))
  2171. t(10,-7,-5,-15,(-16, -16, -5))
  2172. t(10,-7,-5,-3,(-4, -4, -5))
  2173. t(10,-7,-5,0,(-1, -1, -5))
  2174. t(10,-7,-5,1,(0, -1, -5))
  2175. t(10,-7,-5,5,(4, -1, -5))
  2176. t(10,-7,-5,10,(9, 3, -5))
  2177. t(10,-7,-5,100,(10, 93, -5))
  2178. t(10,-7,-3,-100,(-101, -101, -3))
  2179. t(10,-7,-3,-15,(-16, -16, -3))
  2180. t(10,-7,-3,-3,(-4, -4, -3))
  2181. t(10,-7,-3,0,(-1, -1, -3))
  2182. t(10,-7,-3,1,(0, -1, -3))
  2183. t(10,-7,-3,5,(4, -1, -3))
  2184. t(10,-7,-3,10,(9, 3, -3))
  2185. t(10,-7,-3,100,(10, 93, -3))
  2186. t(10,-7,-1,-100,(-101, -101, -1))
  2187. t(10,-7,-1,-15,(-16, -16, -1))
  2188. t(10,-7,-1,-3,(-4, -4, -1))
  2189. t(10,-7,-1,0,(-1, -1, -1))
  2190. t(10,-7,-1,1,(0, -1, -1))
  2191. t(10,-7,-1,5,(4, -1, -1))
  2192. t(10,-7,-1,10,(9, 3, -1))
  2193. t(10,-7,-1,100,(10, 93, -1))
  2194. t(10,-7,1,-100,(-100, -100, 1))
  2195. t(10,-7,1,-15,(-15, -15, 1))
  2196. t(10,-7,1,-3,(-3, -3, 1))
  2197. t(10,-7,1,0,(0, 0, 1))
  2198. t(10,-7,1,1,(1, 0, 1))
  2199. t(10,-7,1,5,(5, 0, 1))
  2200. t(10,-7,1,10,(10, 3, 1))
  2201. t(10,-7,1,100,(10, 93, 1))
  2202. t(10,-7,5,-100,(-100, -100, 5))
  2203. t(10,-7,5,-15,(-15, -15, 5))
  2204. t(10,-7,5,-3,(-3, -3, 5))
  2205. t(10,-7,5,0,(0, 0, 5))
  2206. t(10,-7,5,1,(1, 0, 5))
  2207. t(10,-7,5,5,(5, 0, 5))
  2208. t(10,-7,5,10,(10, 3, 5))
  2209. t(10,-7,5,100,(10, 93, 5))
  2210. t(10,-7,20,-100,(-100, -100, 20))
  2211. t(10,-7,20,-15,(-15, -15, 20))
  2212. t(10,-7,20,-3,(-3, -3, 20))
  2213. t(10,-7,20,0,(0, 0, 20))
  2214. t(10,-7,20,1,(1, 0, 20))
  2215. t(10,-7,20,5,(5, 0, 20))
  2216. t(10,-7,20,10,(10, 3, 20))
  2217. t(10,-7,20,100,(10, 93, 20))
  2218. t(10,-2,-5,-100,(-101, -101, -5))
  2219. t(10,-2,-5,-15,(-16, -16, -5))
  2220. t(10,-2,-5,-3,(-4, -4, -5))
  2221. t(10,-2,-5,0,(-1, -1, -5))
  2222. t(10,-2,-5,1,(0, -1, -5))
  2223. t(10,-2,-5,5,(4, 3, -5))
  2224. t(10,-2,-5,10,(9, 8, -5))
  2225. t(10,-2,-5,100,(10, 98, -5))
  2226. t(10,-2,-3,-100,(-101, -101, -3))
  2227. t(10,-2,-3,-15,(-16, -16, -3))
  2228. t(10,-2,-3,-3,(-4, -4, -3))
  2229. t(10,-2,-3,0,(-1, -1, -3))
  2230. t(10,-2,-3,1,(0, -1, -3))
  2231. t(10,-2,-3,5,(4, 3, -3))
  2232. t(10,-2,-3,10,(9, 8, -3))
  2233. t(10,-2,-3,100,(10, 98, -3))
  2234. t(10,-2,-1,-100,(-101, -101, -1))
  2235. t(10,-2,-1,-15,(-16, -16, -1))
  2236. t(10,-2,-1,-3,(-4, -4, -1))
  2237. t(10,-2,-1,0,(-1, -1, -1))
  2238. t(10,-2,-1,1,(0, -1, -1))
  2239. t(10,-2,-1,5,(4, 3, -1))
  2240. t(10,-2,-1,10,(9, 8, -1))
  2241. t(10,-2,-1,100,(10, 98, -1))
  2242. t(10,-2,1,-100,(-100, -100, 1))
  2243. t(10,-2,1,-15,(-15, -15, 1))
  2244. t(10,-2,1,-3,(-3, -3, 1))
  2245. t(10,-2,1,0,(0, 0, 1))
  2246. t(10,-2,1,1,(1, 0, 1))
  2247. t(10,-2,1,5,(5, 3, 1))
  2248. t(10,-2,1,10,(10, 8, 1))
  2249. t(10,-2,1,100,(10, 98, 1))
  2250. t(10,-2,5,-100,(-100, -100, 5))
  2251. t(10,-2,5,-15,(-15, -15, 5))
  2252. t(10,-2,5,-3,(-3, -3, 5))
  2253. t(10,-2,5,0,(0, 0, 5))
  2254. t(10,-2,5,1,(1, 0, 5))
  2255. t(10,-2,5,5,(5, 3, 5))
  2256. t(10,-2,5,10,(10, 8, 5))
  2257. t(10,-2,5,100,(10, 98, 5))
  2258. t(10,-2,20,-100,(-100, -100, 20))
  2259. t(10,-2,20,-15,(-15, -15, 20))
  2260. t(10,-2,20,-3,(-3, -3, 20))
  2261. t(10,-2,20,0,(0, 0, 20))
  2262. t(10,-2,20,1,(1, 0, 20))
  2263. t(10,-2,20,5,(5, 3, 20))
  2264. t(10,-2,20,10,(10, 8, 20))
  2265. t(10,-2,20,100,(10, 98, 20))
  2266. t(10,0,-5,-100,(-101, -101, -5))
  2267. t(10,0,-5,-15,(-16, -16, -5))
  2268. t(10,0,-5,-3,(-4, -4, -5))
  2269. t(10,0,-5,0,(-1, -1, -5))
  2270. t(10,0,-5,1,(0, 0, -5))
  2271. t(10,0,-5,5,(4, 0, -5))
  2272. t(10,0,-5,10,(9, 0, -5))
  2273. t(10,0,-5,100,(10, 0, -5))
  2274. t(10,0,-3,-100,(-101, -101, -3))
  2275. t(10,0,-3,-15,(-16, -16, -3))
  2276. t(10,0,-3,-3,(-4, -4, -3))
  2277. t(10,0,-3,0,(-1, -1, -3))
  2278. t(10,0,-3,1,(0, 0, -3))
  2279. t(10,0,-3,5,(4, 0, -3))
  2280. t(10,0,-3,10,(9, 0, -3))
  2281. t(10,0,-3,100,(10, 0, -3))
  2282. t(10,0,-1,-100,(-101, -101, -1))
  2283. t(10,0,-1,-15,(-16, -16, -1))
  2284. t(10,0,-1,-3,(-4, -4, -1))
  2285. t(10,0,-1,0,(-1, -1, -1))
  2286. t(10,0,-1,1,(0, 0, -1))
  2287. t(10,0,-1,5,(4, 0, -1))
  2288. t(10,0,-1,10,(9, 0, -1))
  2289. t(10,0,-1,100,(10, 0, -1))
  2290. t(10,0,1,-100,(-100, -100, 1))
  2291. t(10,0,1,-15,(-15, -15, 1))
  2292. t(10,0,1,-3,(-3, -3, 1))
  2293. t(10,0,1,0,(0, 0, 1))
  2294. t(10,0,1,1,(1, 0, 1))
  2295. t(10,0,1,5,(5, 0, 1))
  2296. t(10,0,1,10,(10, 0, 1))
  2297. t(10,0,1,100,(10, 0, 1))
  2298. t(10,0,5,-100,(-100, -100, 5))
  2299. t(10,0,5,-15,(-15, -15, 5))
  2300. t(10,0,5,-3,(-3, -3, 5))
  2301. t(10,0,5,0,(0, 0, 5))
  2302. t(10,0,5,1,(1, 0, 5))
  2303. t(10,0,5,5,(5, 0, 5))
  2304. t(10,0,5,10,(10, 0, 5))
  2305. t(10,0,5,100,(10, 0, 5))
  2306. t(10,0,20,-100,(-100, -100, 20))
  2307. t(10,0,20,-15,(-15, -15, 20))
  2308. t(10,0,20,-3,(-3, -3, 20))
  2309. t(10,0,20,0,(0, 0, 20))
  2310. t(10,0,20,1,(1, 0, 20))
  2311. t(10,0,20,5,(5, 0, 20))
  2312. t(10,0,20,10,(10, 0, 20))
  2313. t(10,0,20,100,(10, 0, 20))
  2314. t(10,1,-5,-100,(-101, -101, -5))
  2315. t(10,1,-5,-15,(-16, -16, -5))
  2316. t(10,1,-5,-3,(-4, -4, -5))
  2317. t(10,1,-5,0,(-1, -1, -5))
  2318. t(10,1,-5,1,(0, 0, -5))
  2319. t(10,1,-5,5,(4, 1, -5))
  2320. t(10,1,-5,10,(9, 1, -5))
  2321. t(10,1,-5,100,(10, 1, -5))
  2322. t(10,1,-3,-100,(-101, -101, -3))
  2323. t(10,1,-3,-15,(-16, -16, -3))
  2324. t(10,1,-3,-3,(-4, -4, -3))
  2325. t(10,1,-3,0,(-1, -1, -3))
  2326. t(10,1,-3,1,(0, 0, -3))
  2327. t(10,1,-3,5,(4, 1, -3))
  2328. t(10,1,-3,10,(9, 1, -3))
  2329. t(10,1,-3,100,(10, 1, -3))
  2330. t(10,1,-1,-100,(-101, -101, -1))
  2331. t(10,1,-1,-15,(-16, -16, -1))
  2332. t(10,1,-1,-3,(-4, -4, -1))
  2333. t(10,1,-1,0,(-1, -1, -1))
  2334. t(10,1,-1,1,(0, 0, -1))
  2335. t(10,1,-1,5,(4, 1, -1))
  2336. t(10,1,-1,10,(9, 1, -1))
  2337. t(10,1,-1,100,(10, 1, -1))
  2338. t(10,1,1,-100,(-100, -100, 1))
  2339. t(10,1,1,-15,(-15, -15, 1))
  2340. t(10,1,1,-3,(-3, -3, 1))
  2341. t(10,1,1,0,(0, 0, 1))
  2342. t(10,1,1,1,(1, 1, 1))
  2343. t(10,1,1,5,(5, 1, 1))
  2344. t(10,1,1,10,(10, 1, 1))
  2345. t(10,1,1,100,(10, 1, 1))
  2346. t(10,1,5,-100,(-100, -100, 5))
  2347. t(10,1,5,-15,(-15, -15, 5))
  2348. t(10,1,5,-3,(-3, -3, 5))
  2349. t(10,1,5,0,(0, 0, 5))
  2350. t(10,1,5,1,(1, 1, 5))
  2351. t(10,1,5,5,(5, 1, 5))
  2352. t(10,1,5,10,(10, 1, 5))
  2353. t(10,1,5,100,(10, 1, 5))
  2354. t(10,1,20,-100,(-100, -100, 20))
  2355. t(10,1,20,-15,(-15, -15, 20))
  2356. t(10,1,20,-3,(-3, -3, 20))
  2357. t(10,1,20,0,(0, 0, 20))
  2358. t(10,1,20,1,(1, 1, 20))
  2359. t(10,1,20,5,(5, 1, 20))
  2360. t(10,1,20,10,(10, 1, 20))
  2361. t(10,1,20,100,(10, 1, 20))
  2362. t(10,6,-5,-100,(-101, -101, -5))
  2363. t(10,6,-5,-15,(-16, -16, -5))
  2364. t(10,6,-5,-3,(-4, -4, -5))
  2365. t(10,6,-5,0,(-1, -1, -5))
  2366. t(10,6,-5,1,(0, 0, -5))
  2367. t(10,6,-5,5,(4, 4, -5))
  2368. t(10,6,-5,10,(9, 6, -5))
  2369. t(10,6,-5,100,(10, 6, -5))
  2370. t(10,6,-3,-100,(-101, -101, -3))
  2371. t(10,6,-3,-15,(-16, -16, -3))
  2372. t(10,6,-3,-3,(-4, -4, -3))
  2373. t(10,6,-3,0,(-1, -1, -3))
  2374. t(10,6,-3,1,(0, 0, -3))
  2375. t(10,6,-3,5,(4, 4, -3))
  2376. t(10,6,-3,10,(9, 6, -3))
  2377. t(10,6,-3,100,(10, 6, -3))
  2378. t(10,6,-1,-100,(-101, -101, -1))
  2379. t(10,6,-1,-15,(-16, -16, -1))
  2380. t(10,6,-1,-3,(-4, -4, -1))
  2381. t(10,6,-1,0,(-1, -1, -1))
  2382. t(10,6,-1,1,(0, 0, -1))
  2383. t(10,6,-1,5,(4, 4, -1))
  2384. t(10,6,-1,10,(9, 6, -1))
  2385. t(10,6,-1,100,(10, 6, -1))
  2386. t(10,6,1,-100,(-100, -100, 1))
  2387. t(10,6,1,-15,(-15, -15, 1))
  2388. t(10,6,1,-3,(-3, -3, 1))
  2389. t(10,6,1,0,(0, 0, 1))
  2390. t(10,6,1,1,(1, 1, 1))
  2391. t(10,6,1,5,(5, 5, 1))
  2392. t(10,6,1,10,(10, 6, 1))
  2393. t(10,6,1,100,(10, 6, 1))
  2394. t(10,6,5,-100,(-100, -100, 5))
  2395. t(10,6,5,-15,(-15, -15, 5))
  2396. t(10,6,5,-3,(-3, -3, 5))
  2397. t(10,6,5,0,(0, 0, 5))
  2398. t(10,6,5,1,(1, 1, 5))
  2399. t(10,6,5,5,(5, 5, 5))
  2400. t(10,6,5,10,(10, 6, 5))
  2401. t(10,6,5,100,(10, 6, 5))
  2402. t(10,6,20,-100,(-100, -100, 20))
  2403. t(10,6,20,-15,(-15, -15, 20))
  2404. t(10,6,20,-3,(-3, -3, 20))
  2405. t(10,6,20,0,(0, 0, 20))
  2406. t(10,6,20,1,(1, 1, 20))
  2407. t(10,6,20,5,(5, 5, 20))
  2408. t(10,6,20,10,(10, 6, 20))
  2409. t(10,6,20,100,(10, 6, 20))
  2410. t(10,10,-5,-100,(-101, -101, -5))
  2411. t(10,10,-5,-15,(-16, -16, -5))
  2412. t(10,10,-5,-3,(-4, -4, -5))
  2413. t(10,10,-5,0,(-1, -1, -5))
  2414. t(10,10,-5,1,(0, 0, -5))
  2415. t(10,10,-5,5,(4, 4, -5))
  2416. t(10,10,-5,10,(9, 9, -5))
  2417. t(10,10,-5,100,(10, 10, -5))
  2418. t(10,10,-3,-100,(-101, -101, -3))
  2419. t(10,10,-3,-15,(-16, -16, -3))
  2420. t(10,10,-3,-3,(-4, -4, -3))
  2421. t(10,10,-3,0,(-1, -1, -3))
  2422. t(10,10,-3,1,(0, 0, -3))
  2423. t(10,10,-3,5,(4, 4, -3))
  2424. t(10,10,-3,10,(9, 9, -3))
  2425. t(10,10,-3,100,(10, 10, -3))
  2426. t(10,10,-1,-100,(-101, -101, -1))
  2427. t(10,10,-1,-15,(-16, -16, -1))
  2428. t(10,10,-1,-3,(-4, -4, -1))
  2429. t(10,10,-1,0,(-1, -1, -1))
  2430. t(10,10,-1,1,(0, 0, -1))
  2431. t(10,10,-1,5,(4, 4, -1))
  2432. t(10,10,-1,10,(9, 9, -1))
  2433. t(10,10,-1,100,(10, 10, -1))
  2434. t(10,10,1,-100,(-100, -100, 1))
  2435. t(10,10,1,-15,(-15, -15, 1))
  2436. t(10,10,1,-3,(-3, -3, 1))
  2437. t(10,10,1,0,(0, 0, 1))
  2438. t(10,10,1,1,(1, 1, 1))
  2439. t(10,10,1,5,(5, 5, 1))
  2440. t(10,10,1,10,(10, 10, 1))
  2441. t(10,10,1,100,(10, 10, 1))
  2442. t(10,10,5,-100,(-100, -100, 5))
  2443. t(10,10,5,-15,(-15, -15, 5))
  2444. t(10,10,5,-3,(-3, -3, 5))
  2445. t(10,10,5,0,(0, 0, 5))
  2446. t(10,10,5,1,(1, 1, 5))
  2447. t(10,10,5,5,(5, 5, 5))
  2448. t(10,10,5,10,(10, 10, 5))
  2449. t(10,10,5,100,(10, 10, 5))
  2450. t(10,10,20,-100,(-100, -100, 20))
  2451. t(10,10,20,-15,(-15, -15, 20))
  2452. t(10,10,20,-3,(-3, -3, 20))
  2453. t(10,10,20,0,(0, 0, 20))
  2454. t(10,10,20,1,(1, 1, 20))
  2455. t(10,10,20,5,(5, 5, 20))
  2456. t(10,10,20,10,(10, 10, 20))
  2457. t(10,10,20,100,(10, 10, 20))
  2458. def main():
  2459. a()
  2460. b()
  2461. c()
  2462. main()
  2463. def test_getslice1():
  2464. # verify __getslice__ is used for sequence types
  2465. class C(list):
  2466. def __getslice__(self, i, j):
  2467. return (i,j)
  2468. a = C()
  2469. AreEqual(a[32:197], (32,197))
  2470. def test_getslice_setslice2():
  2471. # positive values work w/o len defined
  2472. class C(object):
  2473. def __getslice__(self, i, j):
  2474. return 'Ok'
  2475. def __setslice__(self, i, j, value):
  2476. self.lastCall = 'set'
  2477. def __delslice__(self, i,j):
  2478. self.lastCall = 'delete'
  2479. a = C()
  2480. AreEqual(a[5:10], 'Ok')
  2481. a.lastCall = ''
  2482. a[5:10] = 'abc'
  2483. AreEqual(a.lastCall, 'set')
  2484. a.lastCall = ''
  2485. del(a[5:10])
  2486. AreEqual(a.lastCall, 'delete')
  2487. # all values work w/ length defined,but don't call len if it's positive
  2488. def test_getslice_setslice3():
  2489. class C(object):
  2490. def __init__(self):
  2491. self.calls = []
  2492. def __getslice__(self, i, j):
  2493. self.calls.append('get')
  2494. return 'Ok'
  2495. def __setslice__(self, i, j, value):
  2496. self.calls.append('set')
  2497. def __delslice__(self, i, j):
  2498. self.calls.append('delete')
  2499. def __len__(self):
  2500. self.calls.append('len')
  2501. return 5
  2502. a = C()
  2503. AreEqual(a[3:5], 'Ok')
  2504. AreEqual(a.calls, ['get'])
  2505. a = C()
  2506. a[3:5] = 'abc'
  2507. AreEqual(a.calls, ['set'])
  2508. a = C()
  2509. del(a[3:5])
  2510. AreEqual(a.calls, ['delete'])
  2511. # but call length if it's negative (and we should only call length once)
  2512. a = C()
  2513. AreEqual(a[-1:5], 'Ok')
  2514. AreEqual(a.calls, ['len', 'get'])
  2515. a = C()
  2516. AreEqual(a[1:-5], 'Ok')
  2517. AreEqual(a.calls, ['len', 'get'])
  2518. a = C()
  2519. AreEqual(a[-1:-5], 'Ok')
  2520. AreEqual(a.calls, ['len', 'get'])
  2521. a = C()
  2522. a[-1:5] = 'abc'
  2523. AreEqual(a.calls, ['len', 'set'])
  2524. a = C()
  2525. a[1:-5] = 'abc'
  2526. AreEqual(a.calls, ['len', 'set'])
  2527. a = C()
  2528. a[-1:-5] = 'abc'
  2529. AreEqual(a.calls, ['len', 'set'])
  2530. a = C()
  2531. del(a[-1:5])
  2532. AreEqual(a.calls, ['len', 'delete'])
  2533. a = C()
  2534. del(a[1:-5])
  2535. AreEqual(a.calls, ['len', 'delete'])
  2536. a = C()
  2537. del(a[-1:-5])
  2538. AreEqual(a.calls, ['len', 'delete'])
  2539. def test_simple_slicing():
  2540. """verify simple slicing works correctly, even in the face of __getitem__ and friends"""
  2541. class only_slice(object):
  2542. def __getslice__(self, i, j):
  2543. self.res = 'get', i, j
  2544. def __setslice__(self, i, j, value):
  2545. self.res = 'set', i, j, value
  2546. def __delslice__(self, i, j):
  2547. self.res = 'del', i, j
  2548. class mixed_slice(object):
  2549. def __getslice__(self, i, j):
  2550. self.res = 'get', i, j
  2551. def __setslice__(self, i, j, value):
  2552. self.res = 'set', i, j, value
  2553. def __delslice__(self, i, j):
  2554. self.res = 'del', i, j
  2555. def __getitem__(self, index): raise Exception()
  2556. def __setitem__(self, index, value): raise Exception()
  2557. def __delitem__(self, index): raise Exception()
  2558. for mytype in [only_slice, mixed_slice]:
  2559. x = mytype()
  2560. x[:]
  2561. AreEqual(x.res, ('get', 0, sys.maxint))
  2562. x[0:]
  2563. AreEqual(x.res, ('get', 0, sys.maxint))
  2564. x[1:]
  2565. AreEqual(x.res, ('get', 1, sys.maxint))
  2566. x[:100]
  2567. AreEqual(x.res, ('get', 0, 100))
  2568. x[:] = 2
  2569. AreEqual(x.res, ('set', 0, sys.maxint, 2))
  2570. x[0:] = 2
  2571. AreEqual(x.res, ('set', 0, sys.maxint, 2))
  2572. x[1:] = 2
  2573. AreEqual(x.res, ('set', 1, sys.maxint, 2))
  2574. x[:100] = 2
  2575. AreEqual(x.res, ('set', 0, 100, 2))
  2576. del x[:]
  2577. AreEqual(x.res, ('del', 0, sys.maxint))
  2578. del x[0:]
  2579. AreEqual(x.res, ('del', 0, sys.maxint))
  2580. del x[1:]
  2581. AreEqual(x.res, ('del', 1, sys.maxint))
  2582. del x[:100]
  2583. AreEqual(x.res, ('del', 0, 100))
  2584. def test_slice_getslice_forbidden():
  2585. """providing no value for step forbids calling __getslice__"""
  2586. class foo:
  2587. def __getslice__(self, i, j):
  2588. return 42
  2589. def __getitem__(self, index):
  2590. return 23
  2591. AreEqual(foo()[::], 23)
  2592. AreEqual(foo()[::None], 23)
  2593. def test_slice_setslice_forbidden():
  2594. """providing no value for step forbids calling __setslice__"""
  2595. global setVal
  2596. class foo:
  2597. def __setslice__(self, i, j, value):
  2598. global setVal
  2599. setVal = i, j, value
  2600. def __setitem__(self, index, value):
  2601. global setVal
  2602. setVal = index, value
  2603. foo()[::] = 23
  2604. AreEqual(setVal, (slice(None, None, None), 23))
  2605. foo()[::None] = 23
  2606. AreEqual(setVal, (slice(None, None, None), 23))
  2607. def test_slice_delslice_forbidden():
  2608. """providing no value for step forbids calling __delslice__"""
  2609. global setVal
  2610. class foo:
  2611. def __delslice__(self, i, j, value):
  2612. global setVal
  2613. setVal = i, j, value
  2614. def __delitem__(self, index):
  2615. global setVal
  2616. setVal = index
  2617. del foo()[::]
  2618. AreEqual(setVal, slice(None, None, None))
  2619. del foo()[::None]
  2620. AreEqual(setVal, slice(None, None, None))
  2621. def test_getslice_missing_values():
  2622. # missing values are different from passing None explicitly
  2623. class myint(int): pass
  2624. class mylong(long): pass
  2625. class foo:
  2626. def __getslice__(self, i, j):
  2627. return (i, j)
  2628. def __getitem__(self, index):
  2629. return (index)
  2630. def __len__(self): return 42
  2631. def validate_slice_result(result, value):
  2632. AreEqual(result, value)
  2633. AreEqual(result[0].__class__, int)
  2634. # only numeric types are passed to __getslice__
  2635. validate_slice_result(foo()[:], (0, 2147483647))
  2636. validate_slice_result(foo()[2L:], (2L, 2147483647))
  2637. validate_slice_result(foo()[2L<<64:], (2147483647, 2147483647))
  2638. validate_slice_result(foo()[:2L], (0, 2L))
  2639. validate_slice_result(foo()[:2L<<64], (0, 2147483647))
  2640. validate_slice_result(foo()[2L:3L], (2L, 3L))
  2641. validate_slice_result(foo()[2L<<64:3L<<64], (2147483647, 2147483647))
  2642. validate_slice_result(foo()[myint(2):], (2, 2147483647))
  2643. validate_slice_result(foo()[:myint(2)], (0, 2))
  2644. validate_slice_result(foo()[myint(2):myint(3)], (2, 3))
  2645. validate_slice_result(foo()[mylong(2):], (2, 2147483647))
  2646. validate_slice_result(foo()[:mylong(2)], (0, 2))
  2647. validate_slice_result(foo()[mylong(2):mylong(3)], (2, 3))
  2648. validate_slice_result(foo()[True:], (1, 2147483647))
  2649. validate_slice_result(foo()[:True], (0, 1))
  2650. validate_slice_result(foo()[False:True], (0, 1))
  2651. def test_slice(foo):
  2652. AreEqual(foo()[None:], slice(None, None))
  2653. AreEqual(foo()[:None], slice(None, None))
  2654. AreEqual(foo()[None:None], slice(None, None))
  2655. AreEqual(foo()['abc':], slice('abc', None))
  2656. AreEqual(foo()[:'abc'], slice(None, 'abc'))
  2657. AreEqual(foo()['abc':'def'], slice('abc', 'def'))
  2658. AreEqual(foo()[2.0:], slice(2.0, None))
  2659. AreEqual(foo()[:2.0], slice(None, 2.0))
  2660. AreEqual(foo()[2.0:3.0], slice(2.0, 3.0))
  2661. AreEqual(foo()[1j:], slice(1j, None))
  2662. AreEqual(foo()[:1j], slice(None, 1j))
  2663. AreEqual(foo()[2j:3j], slice(2j, 3j))
  2664. test_slice(foo)
  2665. class foo:
  2666. def __getitem__(self, index):
  2667. return (index)
  2668. def __len__(self): return 42
  2669. AreEqual(foo()[:], slice(0, 2147483647))
  2670. test_slice(foo)
  2671. def test_setslice_missing_values():
  2672. # missing values are different from passing None explicitly
  2673. class myint(int): pass
  2674. class mylong(long): pass
  2675. global setVal
  2676. class foo:
  2677. def __setslice__(self, i, j, value):
  2678. global setVal
  2679. setVal = (i, j, value)
  2680. def __setitem__(self, index, value):
  2681. global setVal
  2682. setVal = (index, value)
  2683. def __len__(self): return 42
  2684. # only numeric types are passed to __getslice__
  2685. foo()[:] = 123
  2686. AreEqual(setVal, (0, 2147483647, 123))
  2687. foo()[2L:] = 123
  2688. AreEqual(setVal, (2L, 2147483647, 123))
  2689. foo()[2L<<64:] = 123
  2690. AreEqual(setVal, (2147483647, 2147483647, 123))
  2691. foo()[:2L] = 123
  2692. AreEqual(setVal, (0, 2L, 123))
  2693. foo()[:2L<<64] = 123
  2694. AreEqual(setVal, (0, 2147483647, 123))
  2695. foo()[2L:3L] = 123
  2696. AreEqual(setVal, (2L, 3L, 123))
  2697. foo()[2L<<64:3L<<64] = 123
  2698. AreEqual(setVal, (2147483647, 2147483647, 123))
  2699. foo()[myint(2):] = 123
  2700. AreEqual(setVal, (2, 2147483647, 123))
  2701. foo()[:myint(2)] = 123
  2702. AreEqual(setVal, (0, 2, 123))
  2703. foo()[myint(2):myint(3)] = 123
  2704. AreEqual(setVal, (2, 3, 123))
  2705. foo()[mylong(2):] = 123
  2706. AreEqual(setVal, (2, 2147483647, 123))
  2707. foo()[:mylong(2)] = 123
  2708. AreEqual(setVal, (0, 2, 123))
  2709. foo()[mylong(2):mylong(3)] = 123
  2710. AreEqual(setVal, (2, 3, 123))
  2711. foo()[True:] = 123
  2712. AreEqual(setVal, (1, 2147483647, 123))
  2713. foo()[:True] = 123
  2714. AreEqual(setVal, (0, 1, 123))
  2715. foo()[False:True] = 123
  2716. AreEqual(setVal, (0, 1, 123))
  2717. def test_slice(foo):
  2718. foo()[None:] = 123
  2719. AreEqual(setVal, (slice(None, None), 123))
  2720. foo()[:None] = 123
  2721. AreEqual(setVal, (slice(None, None), 123))
  2722. foo()[None:None] = 123
  2723. AreEqual(setVal, (slice(None, None), 123))
  2724. foo()['abc':] = 123
  2725. AreEqual(setVal, (slice('abc', None), 123))
  2726. foo()[:'abc'] = 123
  2727. AreEqual(setVal, (slice(None, 'abc'), 123))
  2728. foo()['abc':'def'] = 123
  2729. AreEqual(setVal, (slice('abc', 'def'), 123))
  2730. foo()[2.0:] = 123
  2731. AreEqual(setVal, (slice(2.0, None), 123))
  2732. foo()[:2.0] = 123
  2733. AreEqual(setVal, (slice(None, 2.0), 123))
  2734. foo()[2.0:3.0] = 123
  2735. AreEqual(setVal, (slice(2.0, 3.0), 123))
  2736. foo()[1j:] = 123
  2737. AreEqual(setVal, (slice(1j, None), 123))
  2738. foo()[:1j] = 123
  2739. AreEqual(setVal, (slice(None, 1j), 123))
  2740. foo()[2j:3j] = 123
  2741. AreEqual(setVal, (slice(2j, 3j), 123))
  2742. test_slice(foo)
  2743. class foo:
  2744. def __setitem__(self, index, value):
  2745. global setVal
  2746. setVal = index, value
  2747. def __len__(self): return 42
  2748. foo()[:] = 123
  2749. AreEqual(setVal, (slice(0, 2147483647), 123))
  2750. test_slice(foo)
  2751. def test_delslice_missing_values():
  2752. # missing values are different from passing None explicitly
  2753. class myint(int): pass
  2754. class mylong(long): pass
  2755. global setVal
  2756. class foo:
  2757. def __delslice__(self, i, j):
  2758. global setVal
  2759. setVal = (i, j)
  2760. def __delitem__(self, index):
  2761. global setVal
  2762. setVal = index
  2763. def __len__(self): return 42
  2764. # only numeric types are passed to __getslice__
  2765. del foo()[:]
  2766. AreEqual(setVal, (0, 2147483647))
  2767. del foo()[2L:]
  2768. AreEqual(setVal, (2L, 2147483647))
  2769. del foo()[2L<<64:]
  2770. AreEqual(setVal, (2147483647, 2147483647))
  2771. del foo()[:2L]
  2772. AreEqual(setVal, (0, 2L))
  2773. del foo()[:2L<<64]
  2774. AreEqual(setVal, (0, 2147483647))
  2775. del foo()[2L:3L]
  2776. AreEqual(setVal, (2L, 3L))
  2777. del foo()[2L<<64:3L<<64]
  2778. AreEqual(setVal, (2147483647, 2147483647))
  2779. del foo()[myint(2):]
  2780. AreEqual(setVal, (2, 2147483647))
  2781. del foo()[:myint(2)]
  2782. AreEqual(setVal, (0, 2))
  2783. del foo()[myint(2):myint(3)]
  2784. AreEqual(setVal, (2, 3))
  2785. del foo()[mylong(2):]
  2786. AreEqual(setVal, (2, 2147483647))
  2787. del foo()[:mylong(2)]
  2788. AreEqual(setVal, (0, 2))
  2789. del foo()[mylong(2):mylong(3)]
  2790. AreEqual(setVal, (2, 3))
  2791. del foo()[:True]
  2792. AreEqual(setVal, (0, 1))
  2793. del foo()[True:]
  2794. AreEqual(setVal, (1, 2147483647))
  2795. del foo()[False:True]
  2796. AreEqual(setVal, (0, 1))
  2797. def test_slice(foo):
  2798. del foo()[None:]
  2799. AreEqual(setVal, slice(None, None))
  2800. del foo()[:None]
  2801. AreEqual(setVal, slice(None, None))
  2802. del foo()[None:None]
  2803. AreEqual(setVal, slice(None, None))
  2804. del foo()['abc':]
  2805. AreEqual(setVal, slice('abc', None))
  2806. del foo()[:'abc']
  2807. AreEqual(setVal, slice(None, 'abc'))
  2808. del foo()['abc':'def']
  2809. AreEqual(setVal, slice('abc', 'def'))
  2810. del foo()[2.0:]
  2811. AreEqual(setVal, slice(2.0, None))
  2812. del foo()[:2.0]
  2813. AreEqual(setVal, slice(None, 2.0))
  2814. del foo()[2.0:3.0]
  2815. AreEqual(setVal, slice(2.0, 3.0))
  2816. del foo()[1j:]
  2817. AreEqual(setVal, slice(1j, None))
  2818. del foo()[:1j]
  2819. AreEqual(setVal, slice(None, 1j))
  2820. del foo()[2j:3j]
  2821. AreEqual(setVal, slice(2j, 3j))
  2822. test_slice(foo)
  2823. class foo:
  2824. def __delitem__(self, index):
  2825. global setVal
  2826. setVal = index
  2827. def __len__(self): return 42
  2828. del foo()[:]
  2829. AreEqual(setVal, slice(0, 2147483647))
  2830. test_slice(foo)
  2831. def test_oldclass_and_direct():
  2832. """tests slicing OldInstance's and directly passing a slice object"""
  2833. class OldStyle:
  2834. def __getitem__(self, index):
  2835. return index
  2836. class OldStyleWithLen:
  2837. def __getitem__(self, index):
  2838. return index
  2839. def __len__(self):
  2840. return 10
  2841. class NewStyle(object):
  2842. def __getitem__(self, index):
  2843. return index
  2844. class OldStyleWithLenAndGetSlice:
  2845. def __getitem__(self, index):
  2846. return index
  2847. def __len__(self):
  2848. return 10
  2849. def __getslice__(self, start, stop):
  2850. return start, stop
  2851. # slice object should pass through unmodified if constructed explicitly.
  2852. AreEqual(NewStyle()[slice(None, -1, None)], slice(None, -1, None))
  2853. AreEqual(OldStyleWithLen()[slice(None, -1, None)], slice(None, -1, None))
  2854. AreEqual(OldStyle()[slice(None, -1, None)], slice(None, -1, None))
  2855. AreEqual(OldStyleWithLenAndGetSlice()[slice(None, -1, None)], slice(None, -1, None))
  2856. # using the slice syntax
  2857. AreEqual(NewStyle()[:-1], slice(None, -1, None))
  2858. AreEqual(OldStyleWithLen()[:-1], slice(0, 9, None))
  2859. AreEqual(OldStyleWithLenAndGetSlice()[:-1], (0, 9))
  2860. AreEqual(OldStyle()[:-1:1], slice(None, -1, 1))
  2861. # need __len__ to be defined for negative indexing
  2862. try:
  2863. OldStyle()[:-1],
  2864. AssertUnreachable()
  2865. except AttributeError:
  2866. pass
  2867. try:
  2868. OldStyle()[-1:],
  2869. AssertUnreachable()
  2870. except AttributeError:
  2871. pass
  2872. for x, y in [(-1, -1),
  2873. (-2, 0),
  2874. (0, -2),
  2875. (-2, -2),
  2876. ]:
  2877. try:
  2878. OldStyle()[x:y],
  2879. AssertUnreachable()
  2880. except AttributeError:
  2881. pass
  2882. # but if we provide a step no length is needed because we'll never use __getslice__
  2883. AreEqual(OldStyle()[:-1:None], slice(None, -1, None))
  2884. AreEqual(OldStyle()[-1::None], slice(-1, None, None))
  2885. AreEqual(OldStyle()[:-1:], slice(None, -1, None))
  2886. AreEqual(OldStyle()[-1::], slice(-1, None, None))
  2887. def test_oldclass_and_direct_set():
  2888. """tests slicing OldInstance's and directly passing a slice object"""
  2889. global setVal
  2890. class OldStyle:
  2891. def __setitem__(self, index, value):
  2892. global setVal
  2893. setVal = index, value
  2894. class OldStyleWithLen:
  2895. def __setitem__(self, index, value):
  2896. global setVal
  2897. setVal = index, value
  2898. def __len__(self):
  2899. return 10
  2900. class NewStyle(object):
  2901. def __setitem__(self, index, value):
  2902. global setVal
  2903. setVal = index, value
  2904. class OldStyleWithLenAndGetSlice:
  2905. def __setitem__(self, index, value):
  2906. global setVal
  2907. setVal = index, value
  2908. def __len__(self):
  2909. return 10
  2910. def __setslice__(self, start, stop, value):
  2911. global setVal
  2912. setVal = start, stop, value
  2913. # slice object should pass through unmodified if constructed explicitly.
  2914. NewStyle()[slice(None, -1, None)] = 123
  2915. AreEqual(setVal, (slice(None, -1, None), 123))
  2916. OldStyleWithLen()[slice(None, -1, None)] = 123
  2917. AreEqual(setVal, (slice(None, -1, None), 123))
  2918. OldStyle()[slice(None, -1, None)] = 123
  2919. AreEqual(setVal, (slice(None, -1, None), 123))
  2920. OldStyleWithLenAndGetSlice()[slice(None, -1, None)] = 123
  2921. AreEqual(setVal, (slice(None, -1, None), 123))
  2922. # using the slice syntax
  2923. NewStyle()[:-1] = 123
  2924. AreEqual(setVal, (slice(None, -1, None), 123))
  2925. OldStyleWithLen()[:-1] = 123
  2926. AreEqual(setVal, (slice(0, 9, None), 123))
  2927. OldStyleWithLenAndGetSlice()[:-1] = 123
  2928. AreEqual(setVal, (0, 9, 123))
  2929. OldStyle()[:-1:1] = 123
  2930. AreEqual(setVal, (slice(None, -1, 1), 123))
  2931. # need __len__ to be defined for negative indexing
  2932. try:
  2933. OldStyle()[:-1] = 123
  2934. AssertUnreachable()
  2935. except AttributeError:
  2936. pass
  2937. try:
  2938. OldStyle()[-1:] = 123
  2939. AssertUnreachable()
  2940. except AttributeError:
  2941. pass
  2942. # but if we provide a step no length is needed because we'll never use __getslice__
  2943. OldStyle()[:-1:None] = 123
  2944. AreEqual(setVal, (slice(None, -1, None), 123))
  2945. OldStyle()[-1::None] = 123
  2946. AreEqual(setVal, (slice(-1, None, None), 123))
  2947. OldStyle()[:-1:] = 123
  2948. AreEqual(setVal, (slice(None, -1, None), 123))
  2949. OldStyle()[-1::] = 123
  2950. AreEqual(setVal, (slice(-1, None, None), 123))
  2951. def test_oldclass_and_direct_delete():
  2952. """tests slicing OldInstance's and directly passing a slice object"""
  2953. global setVal
  2954. class OldStyle:
  2955. def __delitem__(self, index):
  2956. global setVal
  2957. setVal = index
  2958. class OldStyleWithLen:
  2959. def __delitem__(self, index):
  2960. global setVal
  2961. setVal = index
  2962. def __len__(self):
  2963. return 10
  2964. class NewStyle(object):
  2965. def __delitem__(self, index):
  2966. global setVal
  2967. setVal = index
  2968. class OldStyleWithLenAndGetSlice:
  2969. def __delitem__(self, index):
  2970. global setVal
  2971. setVal = index
  2972. def __len__(self):
  2973. return 10
  2974. def __delslice__(self, start, stop):
  2975. global setVal
  2976. setVal = start, stop
  2977. # slice object should pass through unmodified if constructed explicitly.
  2978. del NewStyle()[slice(None, -1, None)]
  2979. AreEqual(setVal, (slice(None, -1, None)))
  2980. del OldStyleWithLen()[slice(None, -1, None)]
  2981. AreEqual(setVal, (slice(None, -1, None)))
  2982. del OldStyle()[slice(None, -1, None)]
  2983. AreEqual(setVal, (slice(None, -1, None)))
  2984. del OldStyleWithLenAndGetSlice()[slice(None, -1, None)]
  2985. AreEqual(setVal, (slice(None, -1, None)))
  2986. # using the slice syntax
  2987. del NewStyle()[:-1]
  2988. AreEqual(setVal, (slice(None, -1, None)))
  2989. del OldStyleWithLen()[:-1]
  2990. AreEqual(setVal, (slice(0, 9, None)))
  2991. del OldStyleWithLenAndGetSlice()[:-1]
  2992. AreEqual(setVal, (0, 9))
  2993. del OldStyle()[:-1:1]
  2994. AreEqual(setVal, (slice(None, -1, 1)))
  2995. # need __len__ to be defined for negative indexing
  2996. try:
  2997. OldStyle()[:-1] = 123
  2998. AssertUnreachable()
  2999. except AttributeError:
  3000. pass
  3001. try:
  3002. OldStyle()[-1:] = 123
  3003. AssertUnreachable()
  3004. except AttributeError:
  3005. pass
  3006. # but if we provide a step no length is needed because we'll never use __getslice__
  3007. del OldStyle()[:-1:None]
  3008. AreEqual(setVal, (slice(None, -1, None)))
  3009. del OldStyle()[-1::None]
  3010. AreEqual(setVal, (slice(-1, None, None)))
  3011. del OldStyle()[:-1:]
  3012. AreEqual(setVal, (slice(None, -1, None)))
  3013. del OldStyle()[-1::]
  3014. AreEqual(setVal, (slice(-1, None, None)))
  3015. def test_cp8297():
  3016. #-1
  3017. x = range(3)
  3018. x[:-1] = x
  3019. AreEqual(x, [0, 1, 2, 2])
  3020. #-2
  3021. x = range(3)
  3022. x[:-2] = x
  3023. AreEqual(x, [0, 1, 2, 1, 2])
  3024. for i in [0, -3, -10, -1001, -2147483648, -2147483649, -9223372036854775807L, -9223372036854775808L, -9223372036854775809L]:
  3025. x = range(3)
  3026. x[:i] = x
  3027. AreEqual(x, [0, 1, 2, 0, 1, 2])
  3028. def test_pickle():
  3029. from cPickle import dumps, loads
  3030. vals = [None, 1]
  3031. for start in vals:
  3032. for stop in vals:
  3033. for step in vals:
  3034. inp = slice(start, stop, step)
  3035. AreEqual(inp, loads(dumps(inp)))
  3036. run_test(__name__)