├── .gitignore ├── README.md ├── config.py ├── data ├── CAMRa2011 │ ├── groupMember.txt │ ├── groupRatingNegative.txt │ ├── groupRatingTest.txt │ ├── groupRatingTrain.txt │ ├── userRatingNegative.txt │ ├── userRatingTest.txt │ └── userRatingTrain.txt └── __init__.py ├── dataset.py ├── main.py ├── model ├── __init__.py └── agree.py └── utils ├── __init__.py └── util.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.pkl 2 | *.zip 3 | .idea/ 4 | __pycache__/ 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Attentive Group Recommendation 2 | 3 | This is our implementation for the paper: 4 | 5 | Da Cao, Xiangnan He, Lianhai Miao, Yahui An, Chao Yang, and Richang Hong. 2018. Attentive Group Recommendation. In The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval (SIGIR '18). ACM, New York, NY, USA, 645-654. 6 | 7 | In order to learn the group interest, we use attention mechanism to learn the aggregation strategy from data in a dynamic way. 8 | 9 | **Please cite our SIGIR'18 paper if you use our codes. Thanks!** 10 | 11 | BibTeX: 12 | 13 | ``` 14 | @inproceedings{Cao2018Attentive, 15 | author = {Cao, Da and He, Xiangnan and Miao, Lianhai and An, Yahui and Yang, Chao and Hong, Richang}, 16 | title = {Attentive Group Recommendation}, 17 | booktitle = {The 41st International ACM SIGIR Conference on Research \&\#38; Development in Information Retrieval}, 18 | series = {SIGIR '18}, 19 | year = {2018}, 20 | isbn = {978-1-4503-5657-2}, 21 | location = {Ann Arbor, MI, USA}, 22 | pages = {645--654}, 23 | numpages = {10}, 24 | url = {http://doi.acm.org/10.1145/3209978.3209998}, 25 | doi = {10.1145/3209978.3209998}, 26 | acmid = {3209998}, 27 | publisher = {ACM}, 28 | address = {New York, NY, USA}, 29 | keywords = {atention mechanism, cold-start problem, group recommendation, neural collaborative filtering, recommender systems}, 30 | } 31 | ``` 32 | 33 | ## Environment Settings 34 | We use the framework pytorch. 35 | - pytorch version: '0.3.0' or '1.x' 36 | - python version: '3.5' 37 | 38 | It's better to use Pytorch 1.x to run the code. 39 | 40 | **Thanks [zanshuxun](https://github.com/zanshuxun) for providing the newest pytorch version code.** 41 | 42 | ## Example to run the codes. 43 | 44 | Run AGREE: 45 | 46 | ``` 47 | python main.py 48 | ``` 49 | 50 | After training process, the value of HR and NDCG in the test dataset will be printed in command window after each optimization iteration. 51 | 52 | Output: 53 | 54 | ``` 55 | AGREE at embedding size 32, run Iteration:30, NDCG and HR at 5 56 | ... 57 | User Iteration 10 [449.8 s]: HR = 0.6216, NDCG = 0.4133, [1.0 s] 58 | Group Iteration 10 [471.9 s]: HR = 0.5910, NDCG = 0.4005, [23.0 s] 59 | 60 | ``` 61 | 62 | 63 | ## Parameter Tuning 64 | 65 | we put all the papameters in the config.py 66 | 67 | ## Dataset 68 | 69 | We provide one processed dataset: CAMRa2011. 70 | 71 | Because we have another paper use the MaFengWo dataset are under reviewing, so we can't release MaFengWo dataset now. 72 | 73 | group(user) train.rating: 74 | 75 | * Train file. 76 | * Each Line is a training instance: groupID(userID)\t itemID\t rating\t timestamp (if have) 77 | 78 | test.rating: 79 | 80 | * group(user) Test file (positive instances). 81 | * Each Line is a testing instance: groupID(userID)\t itemID\t rating\t timestamp (if have) 82 | 83 | test.negative 84 | 85 | * group(user) Test file (negative instances). 86 | * Each line corresponds to the line of test.rating, containing 100 negative samples. 87 | * Each line is in the format: (groupID(userID),itemID)\t negativeItemID1\t negativeItemID2 ... 88 | -------------------------------------------------------------------------------- /config.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Created on Nov 10, 2017 3 | Store parameters 4 | 5 | @author: Lianhai Miao 6 | ''' 7 | 8 | class Config(object): 9 | def __init__(self): 10 | self.path = './data/CAMRa2011/' 11 | self.user_dataset = self.path + 'userRating' 12 | self.group_dataset = self.path + 'groupRating' 13 | self.user_in_group_path = "./data/CAMRa2011/groupMember.txt" 14 | self.embedding_size = 32 15 | self.epoch = 30 16 | self.num_negatives = 6 17 | self.batch_size = 256 18 | self.lr = [0.000005, 0.000001, 0.0000005] 19 | self.drop_ratio = 0.2 20 | self.topK = 5 21 | -------------------------------------------------------------------------------- /data/CAMRa2011/groupMember.txt: -------------------------------------------------------------------------------- 1 | 216 346,414 2 | 217 433,526 3 | 214 559,570 4 | 215 226,294 5 | 212 415,470 6 | 213 43,267,308 7 | 210 443,520 8 | 211 53,392 9 | 165 451,496 10 | 264 105,171 11 | 265 556,253,366 12 | 218 334,386 13 | 219 199,302 14 | 133 6,126 15 | 132 141,519 16 | 131 480,500 17 | 130 179,348 18 | 137 106,524 19 | 136 304,587 20 | 135 42,510 21 | 134 113,120 22 | 139 440,545 23 | 138 365,490 24 | 166 258,397 25 | 24 27,404 26 | 25 58,252 27 | 26 157,565,431 28 | 27 347,462 29 | 20 8,435 30 | 21 152,484 31 | 22 271,502 32 | 23 155,381 33 | 160 391,405 34 | 28 597,521 35 | 29 23,523 36 | 161 210,486 37 | 289 61,475 38 | 0 21,198 39 | 4 83,136 40 | 281 135,151 41 | 8 93,99 42 | 283 183,352 43 | 163 575,530 44 | 285 139,268 45 | 284 70,413 46 | 287 19,167,282,283 47 | 286 2,31 48 | 119 311,343 49 | 258 122,315 50 | 120 395,551 51 | 121 9,46 52 | 122 116,329 53 | 123 33,400 54 | 124 222,428 55 | 125 172,204 56 | 126 0,485 57 | 127 129,376 58 | 128 340,396 59 | 129 213,291 60 | 269 110,364 61 | 268 234,529 62 | 167 188,208 63 | 118 508,515 64 | 59 153,235 65 | 58 319,419 66 | 55 287,382 67 | 54 303,374 68 | 57 248,305 69 | 56 114,349 70 | 51 239,344 71 | 50 375,507 72 | 53 378,420 73 | 52 127,261 74 | 259 11,416 75 | 276 181,505 76 | 164 68,534 77 | 201 60,353,368 78 | 199 76,549 79 | 179 112,552 80 | 200 148,367 81 | 195 47,401 82 | 194 249,472 83 | 197 160,567,424,491 84 | 178 77,498 85 | 191 85,447 86 | 190 566,278 87 | 193 236,425 88 | 192 88,460 89 | 115 323,458 90 | 114 557,482 91 | 88 12,214 92 | 89 173,438 93 | 111 80,193 94 | 110 298,383 95 | 113 421,481 96 | 112 15,202 97 | 82 180,328 98 | 83 102,409 99 | 80 51,262 100 | 81 36,336 101 | 86 57,270 102 | 87 158,423 103 | 84 300,449 104 | 85 238,467 105 | 251 108,471 106 | 198 560,562 107 | 256 418,493 108 | 206 483,522 109 | 226 159,377 110 | 257 339,459 111 | 3 86,189 112 | 177 45,192 113 | 254 292,544 114 | 7 216,599 115 | 247 81,406 116 | 273 73,430 117 | 255 555,264 118 | 225 104,140 119 | 245 133,290 120 | 244 49,539 121 | 108 72,233 122 | 109 34,169 123 | 241 547,553 124 | 240 14,511 125 | 243 332,437 126 | 242 465,533 127 | 102 186,469 128 | 103 50,537 129 | 100 257,578 130 | 101 247,359 131 | 106 65,109 132 | 107 190,422 133 | 104 588,506 134 | 105 432,590 135 | 39 144,488 136 | 38 22,306 137 | 33 111,429 138 | 32 7,243 139 | 31 97,98,166 140 | 30 220,309 141 | 37 245,456 142 | 36 231,307 143 | 35 66,250 144 | 34 170,412 145 | 246 285,504 146 | 282 145,543 147 | 252 317,322 148 | 205 579,466 149 | 223 569,581 150 | 176 572,513 151 | 60 360,441 152 | 61 128,299 153 | 62 32,436 154 | 63 227,501 155 | 64 358,442 156 | 65 312,342 157 | 66 82,95 158 | 67 399,525 159 | 68 276,546 160 | 69 3,205,297 161 | 175 30,379 162 | 174 79,265 163 | 173 574,351 164 | 172 568,284 165 | 171 219,246 166 | 170 476,516 167 | 203 69,474 168 | 222 212,363 169 | 288 156,274 170 | 181 149,454 171 | 253 78,228 172 | 248 331,371 173 | 182 174,197 174 | 183 580,583 175 | 180 337,494 176 | 2 24,187 177 | 162 71,563 178 | 187 178,333 179 | 184 35,558 180 | 6 154,177 181 | 220 357,582 182 | 186 26,503 183 | 188 206,591 184 | 189 90,313,325 185 | 202 200,301 186 | 196 25,561,411 187 | 221 223,384 188 | 185 237,446 189 | 271 29,91 190 | 99 131,335 191 | 98 254,457 192 | 168 495,509 193 | 169 55,402 194 | 229 52,194 195 | 228 370,448 196 | 91 92,259 197 | 90 28,241 198 | 93 380,389 199 | 92 314,463 200 | 95 20,101 201 | 94 240,408 202 | 97 464,473 203 | 96 211,350 204 | 11 143,182 205 | 10 115,518 206 | 13 39,354,453 207 | 12 295,499 208 | 15 217,280 209 | 14 100,373 210 | 17 576,417 211 | 16 330,531 212 | 19 41,142 213 | 18 125,541 214 | 117 256,492 215 | 116 75,293 216 | 270 146,517 217 | 274 54,341,589 218 | 204 209,594 219 | 224 564,191 220 | 275 601,586 221 | 151 130,277 222 | 150 74,478 223 | 153 165,479 224 | 152 279,445 225 | 155 40,162 226 | 154 107,361 227 | 157 118,403 228 | 156 318,372 229 | 159 119,123 230 | 158 310,452,540 231 | 277 224,514 232 | 234 320,487 233 | 238 134,455 234 | 239 362,585 235 | 227 577,345 236 | 279 96,461 237 | 207 201,571 238 | 235 48,215 239 | 236 439,584 240 | 237 1,260 241 | 230 573,321 242 | 231 4,132,444,593 243 | 232 497,527 244 | 233 13,369 245 | 280 161,164,185 246 | 48 117,218 247 | 49 16,17 248 | 46 67,326 249 | 47 168,288 250 | 44 269,398 251 | 45 221,356 252 | 42 281,286 253 | 43 554,230 254 | 40 385,410 255 | 41 316,450 256 | 1 427,548 257 | 5 5,489 258 | 9 273,394 259 | 272 44,64,87,324 260 | 146 38,84 261 | 147 592,542 262 | 144 595,251 263 | 145 176,598,528 264 | 142 94,338 265 | 143 18,147 266 | 140 175,272 267 | 141 138,150 268 | 209 242,407 269 | 208 266,387 270 | 148 63,89 271 | 149 103,550 272 | 77 512,532 273 | 76 196,296 274 | 75 225,255 275 | 74 62,289 276 | 73 203,538 277 | 72 184,434 278 | 71 56,275 279 | 70 37,327 280 | 278 121,263,390 281 | 79 195,393 282 | 78 163,229 283 | 263 244,536 284 | 249 137,426 285 | 262 207,468 286 | 261 232,355 287 | 250 124,388 288 | 260 600,596 289 | 267 59,535 290 | 266 10,477 291 | -------------------------------------------------------------------------------- /data/CAMRa2011/groupRatingTest.txt: -------------------------------------------------------------------------------- 1 | 157 2970 80 2 | 25 4381 70 3 | 244 3900 100 4 | 126 2834 60 5 | 175 7077 70 6 | 39 3420 70 7 | 180 4644 85 8 | 282 7252 80 9 | 198 2269 65 10 | 281 4277 75 11 | 114 5141 80 12 | 142 6200 10 13 | 163 2984 50 14 | 2 21 75 15 | 106 3579 80 16 | 255 4515 100 17 | 121 3904 70 18 | 250 1898 45 19 | 255 4135 85 20 | 95 3412 90 21 | 109 2471 30 22 | 31 4263 100 23 | 204 6512 80 24 | 176 6904 75 25 | 112 947 100 26 | 60 3217 90 27 | 210 4919 70 28 | 7 5632 80 29 | 138 3404 55 30 | 238 6208 35 31 | 95 6203 70 32 | 102 7068 70 33 | 5 4785 80 34 | 136 2277 30 35 | 217 704 70 36 | 100 7365 60 37 | 206 2694 80 38 | 61 7091 85 39 | 111 2712 35 40 | 272 1558 50 41 | 186 4237 100 42 | 275 21 75 43 | 268 2984 80 44 | 142 238 80 45 | 70 6069 90 46 | 40 0 50 47 | 259 3732 20 48 | 94 7206 25 49 | 108 954 60 50 | 37 429 85 51 | 256 3544 70 52 | 275 6887 80 53 | 118 6506 75 54 | 213 400 90 55 | 89 2146 95 56 | 261 5382 70 57 | 148 2984 70 58 | 235 5517 65 59 | 68 5127 90 60 | 148 2639 85 61 | 275 3583 80 62 | 254 1234 75 63 | 115 7506 15 64 | 175 3895 80 65 | 282 2274 65 66 | 170 2476 70 67 | 247 990 100 68 | 185 5389 80 69 | 149 5632 65 70 | 59 3703 95 71 | 246 4524 50 72 | 48 543 25 73 | 267 6251 80 74 | 78 2157 65 75 | 219 3579 65 76 | 284 948 85 77 | 102 2461 65 78 | 69 6707 55 79 | 246 2180 100 80 | 70 3586 80 81 | 88 5643 50 82 | 153 1738 60 83 | 165 2100 95 84 | 220 6698 60 85 | 69 5367 85 86 | 151 3400 60 87 | 1 1238 60 88 | 267 3961 90 89 | 229 2146 60 90 | 36 4845 40 91 | 152 2965 80 92 | 170 401 80 93 | 113 532 60 94 | 16 2468 70 95 | 77 3082 90 96 | 218 3066 55 97 | 19 1104 100 98 | 108 2869 60 99 | 229 6211 45 100 | 87 5771 85 101 | 104 4630 80 102 | 83 4515 65 103 | 32 5366 15 104 | 98 5632 75 105 | 254 4912 60 106 | 224 2143 70 107 | 184 5938 80 108 | 147 5113 0 109 | 71 2146 90 110 | 241 7215 5 111 | 69 4395 70 112 | 219 3807 35 113 | 241 7060 80 114 | 37 6887 95 115 | 225 2321 60 116 | 235 432 65 117 | 179 4540 80 118 | 54 2970 75 119 | 209 6524 60 120 | 180 5114 70 121 | 269 7218 85 122 | 103 5632 70 123 | 138 4836 90 124 | 184 4235 100 125 | 205 4235 80 126 | 154 4777 75 127 | 76 544 75 128 | 76 6709 55 129 | 195 4659 80 130 | 47 3742 85 131 | 253 5250 65 132 | 212 1507 50 133 | 43 267 50 134 | 19 1887 35 135 | 269 1751 90 136 | 141 2153 80 137 | 83 1566 90 138 | 119 3703 75 139 | 34 5774 75 140 | 147 7204 70 141 | 218 5393 75 142 | 199 4247 20 143 | 104 7364 80 144 | 12 1093 75 145 | 41 3702 35 146 | 270 3202 65 147 | 242 2965 60 148 | 25 4785 30 149 | 246 1224 70 150 | 123 3057 95 151 | 225 1897 70 152 | 147 394 10 153 | 77 4392 45 154 | 159 5470 60 155 | 36 6424 45 156 | 95 6203 95 157 | 15 7376 30 158 | 7 2459 80 159 | 45 5477 50 160 | 132 2054 75 161 | 11 6698 70 162 | 280 6367 100 163 | 60 4109 85 164 | 263 3058 70 165 | 130 2846 70 166 | 258 2643 55 167 | 57 5632 80 168 | 50 1223 65 169 | 228 4396 40 170 | 43 7515 65 171 | 244 2326 100 172 | 211 5506 100 173 | 1 4081 95 174 | 161 4785 90 175 | 194 287 70 176 | 253 4386 90 177 | 65 4387 40 178 | 204 4389 80 179 | 185 2044 80 180 | 277 951 100 181 | 58 5490 60 182 | 15 4515 100 183 | 4 2971 85 184 | 120 7364 90 185 | 256 5969 40 186 | 199 5477 90 187 | 20 1882 85 188 | 33 1747 80 189 | 74 5764 10 190 | 134 2472 60 191 | 230 6074 80 192 | 105 4392 50 193 | 246 2908 100 194 | 214 7291 95 195 | 97 217 80 196 | 175 2971 80 197 | 14 4240 70 198 | 117 5375 50 199 | 203 1521 70 200 | 72 2144 55 201 | 284 2043 80 202 | 203 7552 80 203 | 164 5938 80 204 | 232 4963 60 205 | 260 4081 70 206 | 172 7204 90 207 | 96 2259 85 208 | 10 5948 70 209 | 289 4952 45 210 | 182 1754 80 211 | 28 960 60 212 | 143 1240 80 213 | 18 1089 95 214 | 289 5242 75 215 | 84 4386 100 216 | 262 1558 80 217 | 54 5776 90 218 | 203 3819 75 219 | 163 1570 45 220 | 61 2837 75 221 | 135 7061 90 222 | 39 1747 60 223 | 122 4501 100 224 | 130 7204 0 225 | 45 6506 60 226 | 16 705 55 227 | 258 1897 70 228 | 38 4512 65 229 | 82 3705 95 230 | 6 7206 95 231 | 157 402 70 232 | 269 4108 95 233 | 32 694 30 234 | 90 4081 70 235 | 235 1427 85 236 | 237 1107 85 237 | 49 5259 70 238 | 231 6141 60 239 | 186 3411 90 240 | 168 2469 100 241 | 226 2984 75 242 | 222 3974 75 243 | 112 402 100 244 | 4 2468 100 245 | 149 4787 0 246 | 93 1244 70 247 | 270 4505 60 248 | 162 1242 65 249 | 243 4786 20 250 | 287 3195 55 251 | 280 218 35 252 | 273 1892 0 253 | 163 1100 100 254 | 278 4279 80 255 | 129 3217 50 256 | 165 3093 20 257 | 21 2970 75 258 | 160 6219 70 259 | 105 4235 95 260 | 75 3206 65 261 | 44 3217 25 262 | 35 6905 60 263 | 111 4101 70 264 | 76 1773 80 265 | 31 7512 70 266 | 266 7361 100 267 | 38 5941 65 268 | 113 4237 90 269 | 128 951 90 270 | 131 5648 100 271 | 239 6015 20 272 | 1 5941 75 273 | 274 4384 90 274 | 267 1755 60 275 | 234 6089 50 276 | 53 6201 95 277 | 35 4306 80 278 | 13 4515 80 279 | 26 393 55 280 | 9 2493 85 281 | 198 5772 90 282 | 103 7220 90 283 | 120 394 80 284 | 119 2834 100 285 | 231 4787 60 286 | 146 401 85 287 | 164 2984 70 288 | 202 5832 60 289 | 55 7514 50 290 | 143 3217 80 291 | 144 3720 75 292 | 26 5940 80 293 | 14 3063 30 294 | 207 3720 75 295 | 283 5795 75 296 | 252 1039 60 297 | 174 5941 70 298 | 58 1893 45 299 | 175 702 85 300 | 19 4515 100 301 | 170 6367 85 302 | 75 7364 65 303 | 262 951 75 304 | 63 5378 90 305 | 166 7371 65 306 | 136 7365 80 307 | 236 6707 100 308 | 85 1239 75 309 | 174 5366 70 310 | 260 4901 60 311 | 145 1404 70 312 | 107 1389 35 313 | 24 3703 50 314 | 271 7220 85 315 | 42 7072 70 316 | 28 5110 65 317 | 260 5242 80 318 | 231 4503 80 319 | 100 947 75 320 | 93 6219 95 321 | 71 5110 50 322 | 272 2384 75 323 | 78 6203 85 324 | 174 4236 60 325 | 1 6201 95 326 | 203 6918 75 327 | 240 4240 70 328 | 89 1100 80 329 | 29 3217 100 330 | 155 255 70 331 | 71 6370 60 332 | 64 4235 50 333 | 139 1900 75 334 | 41 4081 85 335 | 78 5375 75 336 | 90 4093 30 337 | 127 4376 100 338 | 218 2294 60 339 | 134 4080 90 340 | 77 2274 80 341 | 239 6923 60 342 | 285 7273 75 343 | 84 1264 60 344 | 0 6209 80 345 | 37 413 85 346 | 258 2144 50 347 | 219 5950 60 348 | 217 6507 65 349 | 206 6768 65 350 | 212 5029 35 351 | 236 3057 95 352 | 44 3898 35 353 | 155 3057 55 354 | 83 3420 90 355 | 74 3400 40 356 | 266 5486 70 357 | 210 414 75 358 | 192 5939 85 359 | 25 4393 55 360 | 238 5642 100 361 | 130 3428 75 362 | 20 5 55 363 | 187 5114 45 364 | 271 2260 30 365 | 283 2179 70 366 | 21 1398 30 367 | 102 7060 65 368 | 70 2493 85 369 | 280 4902 75 370 | 52 4111 75 371 | 94 6219 60 372 | 136 6070 65 373 | 268 6697 100 374 | 23 5488 70 375 | 190 6509 95 376 | 65 951 95 377 | 127 6693 0 378 | 225 3491 65 379 | 91 1392 65 380 | 214 2069 45 381 | 45 1241 65 382 | 272 7507 65 383 | 160 2153 60 384 | 255 5254 70 385 | 123 5762 65 386 | 164 5633 60 387 | 216 3788 70 388 | 229 4909 60 389 | 134 543 85 390 | 150 10 75 391 | 125 7072 20 392 | 222 756 85 393 | 191 6070 75 394 | 172 1765 70 395 | 188 1389 25 396 | 135 4080 85 397 | 45 5114 85 398 | 108 2468 70 399 | 105 5242 90 400 | 241 4120 5 401 | 173 4078 50 402 | 253 7537 65 403 | 234 5558 70 404 | 251 6197 65 405 | 247 3436 90 406 | 51 6070 55 407 | 139 698 100 408 | 152 3897 40 409 | 263 5240 100 410 | 173 5941 90 411 | 134 3454 40 412 | 251 946 85 413 | 121 4916 80 414 | 3 5938 85 415 | 94 4262 85 416 | 17 3904 70 417 | 249 5495 70 418 | 115 4779 50 419 | 156 6498 35 420 | 103 3221 80 421 | 18 698 70 422 | 75 5393 100 423 | 92 4921 60 424 | 67 21 15 425 | 22 4395 60 426 | 186 4386 100 427 | 186 1404 85 428 | 192 4836 100 429 | 8 217 75 430 | 111 6895 60 431 | 3 6904 75 432 | 259 5366 85 433 | 226 4381 75 434 | 88 687 75 435 | 191 2971 70 436 | 27 218 85 437 | 176 5647 75 438 | 19 0 100 439 | 11 2968 70 440 | 53 1108 80 441 | 60 5114 85 442 | 9 5 45 443 | 281 3057 60 444 | 281 3199 65 445 | 182 527 75 446 | 227 6236 75 447 | 196 2044 100 448 | 139 3579 100 449 | 66 695 85 450 | 46 3705 80 451 | 44 1101 35 452 | 200 112 70 453 | 115 3578 40 454 | 199 1627 85 455 | 207 1570 80 456 | 42 3477 65 457 | 68 2147 75 458 | 202 1243 85 459 | 87 2504 80 460 | 220 7377 40 461 | 250 1753 100 462 | 288 3702 80 463 | 243 6905 50 464 | 182 1571 40 465 | 286 234 100 466 | 162 6713 70 467 | 153 1566 75 468 | 289 2043 65 469 | 61 2984 65 470 | 245 2904 85 471 | 230 954 10 472 | 129 2048 55 473 | 95 2656 70 474 | 262 1225 100 475 | 244 2999 80 476 | 175 5469 75 477 | 215 5117 75 478 | 286 6905 30 479 | 255 2984 80 480 | 181 5775 10 481 | 258 2971 20 482 | 56 2832 50 483 | 128 1585 65 484 | 223 3222 55 485 | 211 529 85 486 | 173 7205 70 487 | 189 6723 55 488 | 280 1757 80 489 | 73 2467 100 490 | 201 3605 60 491 | 69 3070 35 492 | 64 2468 85 493 | 270 1109 95 494 | 155 7204 100 495 | 245 399 70 496 | 104 5389 80 497 | 84 7204 70 498 | 215 4792 40 499 | 104 1107 55 500 | 111 3217 85 501 | 259 5251 85 502 | 228 2058 70 503 | 148 4902 65 504 | 212 3523 50 505 | 169 1757 70 506 | 120 542 55 507 | 67 5764 60 508 | 286 5126 75 509 | 235 6908 35 510 | 6 3404 65 511 | 96 3056 100 512 | 285 4240 60 513 | 122 5250 70 514 | 263 2153 65 515 | 55 5111 60 516 | 221 3477 70 517 | 4 695 80 518 | 168 947 35 519 | 176 40 80 520 | 79 7361 100 521 | 233 3063 100 522 | 107 6061 80 523 | 180 2146 85 524 | 238 6208 55 525 | 121 1242 100 526 | 133 5776 75 527 | 283 1764 80 528 | 243 4477 75 529 | 170 5778 75 530 | 188 5369 75 531 | 233 955 80 532 | 212 4298 70 533 | 257 1224 75 534 | 184 3058 25 535 | 177 3909 35 536 | 272 4409 65 537 | 5 3887 10 538 | 166 959 55 539 | 194 363 70 540 | 84 1095 35 541 | 108 2259 70 542 | 183 7364 60 543 | 63 5762 100 544 | 164 76 25 545 | 287 6729 55 546 | 138 1897 65 547 | 142 7543 70 548 | 171 4380 85 549 | 31 3202 80 550 | 197 2043 65 551 | 188 7386 65 552 | 243 5764 55 553 | 159 4264 70 554 | 174 5250 55 555 | 29 5126 80 556 | 13 4787 75 557 | 53 1570 0 558 | 178 4501 55 559 | 221 5938 75 560 | 41 6508 80 561 | 172 5488 20 562 | 201 4973 85 563 | 110 2472 60 564 | 168 7229 45 565 | 91 3413 75 566 | 123 2075 55 567 | 76 5485 50 568 | 158 546 60 569 | 99 4111 85 570 | 114 3898 45 571 | 178 5165 85 572 | 244 4506 75 573 | 288 7060 50 574 | 267 5159 95 575 | 275 2653 60 576 | 9 4385 10 577 | 68 7515 80 578 | 102 5776 80 579 | 177 969 40 580 | 100 1107 100 581 | 261 241 75 582 | 35 2109 65 583 | 137 4393 90 584 | 68 7375 80 585 | 114 2044 95 586 | 37 2832 85 587 | 124 5126 70 588 | 118 2831 65 589 | 140 4376 95 590 | 228 3216 65 591 | 206 6201 35 592 | 98 3057 80 593 | 285 3577 5 594 | 16 6370 30 595 | 234 2143 55 596 | 20 1401 40 597 | 221 864 40 598 | 94 3 85 599 | 188 532 50 600 | 51 7205 85 601 | 101 1107 90 602 | 135 5633 70 603 | 39 1224 70 604 | 151 2055 70 605 | 27 5768 70 606 | 53 1756 70 607 | 209 574 40 608 | 85 6064 0 609 | 98 1749 80 610 | 237 3606 85 611 | 58 4778 60 612 | 81 5642 20 613 | 64 6887 60 614 | 190 5632 100 615 | 270 7655 80 616 | 215 5379 80 617 | 153 1900 90 618 | 56 2262 55 619 | 101 1089 100 620 | 144 5242 95 621 | 207 5369 55 622 | 108 5950 80 623 | 207 4237 70 624 | 282 1884 60 625 | 276 5927 35 626 | 13 4243 85 627 | 232 5771 70 628 | 191 4386 40 629 | 31 538 80 630 | 3 1567 25 631 | 278 1592 80 632 | 59 2044 95 633 | 208 736 45 634 | 26 1238 15 635 | 101 2476 95 636 | 116 2274 95 637 | 277 6700 60 638 | 241 218 0 639 | 106 1585 80 640 | 118 2970 75 641 | 236 1574 100 642 | 140 3057 75 643 | 98 4111 75 644 | 251 4236 95 645 | 38 3703 75 646 | 29 7391 90 647 | 273 3202 70 648 | 50 2059 80 649 | 242 4771 85 650 | 204 5774 25 651 | 283 6512 80 652 | 153 3204 95 653 | 80 4779 85 654 | 198 3705 60 655 | 254 946 80 656 | 48 4383 65 657 | 145 6693 50 658 | 62 3190 20 659 | 187 2834 80 660 | 190 6352 30 661 | 74 6703 40 662 | 228 3035 0 663 | 195 3196 75 664 | 13 5366 15 665 | 128 2259 65 666 | 213 1388 60 667 | 34 559 85 668 | 180 948 80 669 | 272 3889 60 670 | 229 6198 50 671 | 62 6711 25 672 | 146 4786 85 673 | 6 4787 95 674 | 76 1892 50 675 | 44 946 55 676 | 227 2969 70 677 | 121 3703 30 678 | 276 4171 70 679 | 166 2260 65 680 | 9 5390 100 681 | 241 6887 35 682 | 96 3411 80 683 | 133 7086 65 684 | 56 2153 80 685 | 96 1570 70 686 | 132 543 85 687 | 122 5113 80 688 | 2 3745 60 689 | 117 6079 80 690 | 83 5112 80 691 | 67 7365 70 692 | 287 3888 20 693 | 49 2461 85 694 | 68 5781 75 695 | 58 4917 70 696 | 165 2209 25 697 | 23 758 75 698 | 30 5470 30 699 | 139 5366 100 700 | 114 2048 80 701 | 104 4512 75 702 | 36 1029 75 703 | 118 3411 95 704 | 13 5967 100 705 | 84 4080 35 706 | 85 4635 35 707 | 20 3412 50 708 | 79 1439 90 709 | 61 1736 80 710 | 22 543 50 711 | 89 238 70 712 | 57 3420 90 713 | 203 1574 90 714 | 124 5385 60 715 | 278 6385 55 716 | 41 3723 60 717 | 99 5965 75 718 | 264 3579 70 719 | 249 7362 40 720 | 181 1737 100 721 | 195 3920 70 722 | 46 6506 75 723 | 227 3070 85 724 | 224 3720 90 725 | 126 695 65 726 | 156 6697 60 727 | 180 985 85 728 | 17 6062 90 729 | 258 526 65 730 | 212 3109 50 731 | 136 1422 60 732 | 66 1090 90 733 | 56 4777 65 734 | 151 1882 100 735 | 71 3579 90 736 | 210 4526 90 737 | 250 766 65 738 | 61 7086 10 739 | 126 4386 75 740 | 210 7204 90 741 | 196 1901 70 742 | 96 4515 95 743 | 111 4561 35 744 | 6 543 95 745 | 161 530 20 746 | 275 7364 75 747 | 1 2058 100 748 | 28 5250 65 749 | 72 5644 75 750 | 179 5495 70 751 | 197 543 55 752 | 15 6699 85 753 | 179 4 75 754 | 260 2475 75 755 | 146 3898 65 756 | 117 3000 70 757 | 107 7070 85 758 | 259 6722 40 759 | 151 695 100 760 | 125 4646 95 761 | 274 6693 40 762 | 14 4081 70 763 | 149 217 70 764 | 33 2274 50 765 | 150 3598 85 766 | 169 4392 70 767 | 187 5114 100 768 | 17 7072 45 769 | 7 1397 85 770 | 124 4389 55 771 | 4 5485 80 772 | 230 4292 0 773 | 41 2669 55 774 | 226 6077 75 775 | 20 2155 55 776 | 240 4393 85 777 | 137 7515 90 778 | 86 6944 60 779 | 191 2059 15 780 | 12 2466 85 781 | 127 2655 50 782 | 183 4243 65 783 | 99 3400 65 784 | 206 954 75 785 | 223 6711 70 786 | 49 2468 80 787 | 10 2964 15 788 | 259 5139 70 789 | 103 5141 50 790 | 97 949 85 791 | 73 17 80 792 | 140 3206 35 793 | 213 6935 85 794 | 86 1901 90 795 | 115 1748 10 796 | 110 2828 90 797 | 14 7074 90 798 | 279 5379 85 799 | 166 3723 75 800 | 218 698 40 801 | 17 6347 85 802 | 223 5651 50 803 | 227 2320 80 804 | 109 5949 25 805 | 50 4902 85 806 | 33 5953 65 807 | 47 4515 85 808 | 215 4109 80 809 | 184 6070 70 810 | 87 4237 60 811 | 249 5496 80 812 | 276 7062 75 813 | 257 1900 65 814 | 140 6348 0 815 | 261 5474 95 816 | 239 1936 60 817 | 273 2984 70 818 | 266 6212 55 819 | 220 395 65 820 | 85 3703 55 821 | 216 5367 90 822 | 205 21 70 823 | 196 1404 80 824 | 236 4663 70 825 | 240 6710 75 826 | 178 3705 80 827 | 208 4179 50 828 | 80 6893 30 829 | 177 6201 70 830 | 209 7151 80 831 | 74 6212 90 832 | 97 7364 90 833 | 135 6198 85 834 | 44 4262 90 835 | 139 1901 65 836 | 209 1969 65 837 | 105 3061 80 838 | 29 4393 85 839 | 99 6207 80 840 | 125 3058 70 841 | 231 3742 65 842 | 271 4786 100 843 | 147 4913 0 844 | 27 2677 55 845 | 130 4803 95 846 | 278 1398 90 847 | 40 4836 70 848 | 179 4562 60 849 | 97 1572 70 850 | 133 2144 100 851 | 158 726 85 852 | 73 3071 85 853 | 252 1767 90 854 | 37 4078 85 855 | 162 6335 60 856 | 189 6335 65 857 | 178 3256 70 858 | 197 2975 80 859 | 38 5953 70 860 | 254 540 55 861 | 214 6077 75 862 | 63 6509 100 863 | 263 7229 100 864 | 153 2686 85 865 | 179 3430 75 866 | 119 6197 50 867 | 277 4079 70 868 | 165 2078 45 869 | 98 946 75 870 | 211 6560 70 871 | 53 1397 70 872 | 230 4237 80 873 | 155 4785 80 874 | 143 3420 75 875 | 204 1882 85 876 | 5 2275 70 877 | 133 2146 90 878 | 248 1914 70 879 | 26 1900 80 880 | 231 5939 75 881 | 66 6212 55 882 | 101 3720 95 883 | 190 7074 80 884 | 32 3064 100 885 | 74 5257 10 886 | 100 695 100 887 | 182 3581 40 888 | 50 947 85 889 | 221 2883 65 890 | 232 2017 75 891 | 189 4245 15 892 | 128 7205 60 893 | 200 707 85 894 | 243 6618 65 895 | 152 2653 80 896 | 22 555 70 897 | 56 2493 75 898 | 123 2650 50 899 | 214 3615 50 900 | 161 6069 70 901 | 21 5633 70 902 | 87 2468 80 903 | 7 946 85 904 | 208 4397 65 905 | 116 6107 70 906 | 237 2476 60 907 | 127 6369 80 908 | 57 4805 80 909 | 261 6430 85 910 | 33 3723 80 911 | 49 3901 70 912 | 103 4392 75 913 | 207 1119 75 914 | 43 4080 60 915 | 149 6206 75 916 | 12 2048 95 917 | 42 3945 50 918 | 112 3 95 919 | 19 686 65 920 | 160 6206 75 921 | 205 2058 85 922 | 89 5248 75 923 | 126 707 85 924 | 77 2656 65 925 | 281 2043 70 926 | 118 7216 70 927 | 281 3418 65 928 | 28 1225 100 929 | 63 4648 80 930 | 131 4963 50 931 | 49 1571 90 932 | 285 219 60 933 | 65 2043 55 934 | 138 6709 25 935 | 30 4818 65 936 | 194 1664 70 937 | 141 2167 5 938 | 157 4799 70 939 | 72 6335 100 940 | 124 2866 85 941 | 192 1089 80 942 | 217 4751 75 943 | 253 7253 100 944 | 134 2467 100 945 | 9 2960 100 946 | 87 281 100 947 | 52 2832 15 948 | 234 4792 15 949 | 126 4080 90 950 | 185 1901 20 951 | 262 5506 70 952 | 162 1914 80 953 | 226 2463 70 954 | 43 4392 75 955 | 15 2054 70 956 | 188 2146 60 957 | 173 7204 85 958 | 257 4235 75 959 | 5 2144 90 960 | 50 980 60 961 | 202 5485 70 962 | 248 785 75 963 | 267 5394 70 964 | 192 3934 75 965 | 256 1792 55 966 | 283 5655 65 967 | 54 4515 70 968 | 193 225 30 969 | 235 708 70 970 | 121 3415 85 971 | 38 6363 90 972 | 81 3579 75 973 | 248 2827 85 974 | 110 4900 60 975 | 199 4517 55 976 | 0 4786 80 977 | 120 21 55 978 | 154 6208 60 979 | 248 5254 50 980 | 239 7205 80 981 | 27 3705 80 982 | 67 3723 0 983 | 158 6917 85 984 | 72 2643 55 985 | 221 1404 45 986 | 288 3412 0 987 | 109 4633 45 988 | 288 3714 60 989 | 90 4387 70 990 | 35 5118 10 991 | 18 3896 60 992 | 276 295 35 993 | 213 2331 90 994 | 287 3583 85 995 | 34 4515 100 996 | 93 1402 50 997 | 279 4659 80 998 | 145 5366 80 999 | 238 5484 70 1000 | 213 6367 75 1001 | 249 4930 85 1002 | 181 2654 55 1003 | 11 2686 50 1004 | 268 1244 70 1005 | 186 5776 90 1006 | 125 3057 75 1007 | 8 1915 75 1008 | 252 2153 90 1009 | 137 4240 70 1010 | 273 3968 90 1011 | 242 5633 25 1012 | 23 5240 80 1013 | 245 2842 50 1014 | 234 2294 85 1015 | 150 24 65 1016 | 178 1785 80 1017 | 82 3713 95 1018 | 109 2496 30 1019 | 193 60 60 1020 | 112 3887 25 1021 | 137 1756 75 1022 | 122 3063 0 1023 | 265 4386 65 1024 | 40 6527 55 1025 | 23 2495 75 1026 | 266 7372 80 1027 | 48 5941 60 1028 | 117 3139 30 1029 | 177 3720 100 1030 | 32 4236 15 1031 | 115 236 70 1032 | 5 1572 65 1033 | 79 1585 80 1034 | 171 7070 60 1035 | 161 5499 65 1036 | 117 766 75 1037 | 214 448 70 1038 | 30 1090 85 1039 | 171 4141 70 1040 | 265 2046 70 1041 | 25 3202 25 1042 | 168 5647 45 1043 | 282 947 100 1044 | 197 3742 90 1045 | 263 395 70 1046 | 205 2965 75 1047 | 237 4907 60 1048 | 284 3057 75 1049 | 151 1107 80 1050 | 257 6918 70 1051 | 69 4633 95 1052 | 171 6223 65 1053 | 3 5938 75 1054 | 227 555 85 1055 | 80 3419 55 1056 | 113 5771 45 1057 | 187 1736 65 1058 | 150 7071 80 1059 | 92 6206 90 1060 | 264 3577 55 1061 | 60 4640 75 1062 | 210 1756 55 1063 | 47 1231 65 1064 | 110 6061 50 1065 | 273 3222 40 1066 | 0 969 80 1067 | 199 4242 60 1068 | 125 7505 95 1069 | 64 2837 50 1070 | 219 3889 85 1071 | 247 1736 100 1072 | 102 4386 85 1073 | 163 1757 5 1074 | 285 2043 15 1075 | 195 6357 80 1076 | 233 2146 100 1077 | 194 2090 65 1078 | 182 1765 45 1079 | 156 6892 15 1080 | 183 5114 75 1081 | 55 5128 90 1082 | 132 2493 85 1083 | 42 2195 15 1084 | 206 5240 45 1085 | 177 2262 35 1086 | 60 1585 55 1087 | 15 5136 100 1088 | 85 1882 70 1089 | 22 3440 60 1090 | 63 7515 55 1091 | 59 429 90 1092 | 83 2144 95 1093 | 32 7515 5 1094 | 39 707 65 1095 | 39 3194 80 1096 | 16 3202 70 1097 | 222 3233 80 1098 | 26 6077 85 1099 | 82 3579 100 1100 | 154 1572 50 1101 | 86 3217 80 1102 | 29 4933 95 1103 | 266 1406 40 1104 | 202 4424 60 1105 | 3 7507 60 1106 | 268 5129 90 1107 | 47 1401 85 1108 | 8 695 100 1109 | 97 5941 95 1110 | 154 4664 35 1111 | 112 2655 40 1112 | 51 3705 85 1113 | 75 5240 55 1114 | 51 2180 40 1115 | 46 5645 75 1116 | 11 3221 50 1117 | 240 1240 85 1118 | 143 1738 90 1119 | 265 575 75 1120 | 119 4641 80 1121 | 164 3203 80 1122 | 46 5948 70 1123 | 185 6191 60 1124 | 24 5771 80 1125 | 2 5245 55 1126 | 24 2475 50 1127 | 21 5941 70 1128 | 95 3579 100 1129 | 34 2269 90 1130 | 55 3060 10 1131 | 36 6265 40 1132 | 256 1737 65 1133 | 107 1752 100 1134 | 131 6369 60 1135 | 52 4247 100 1136 | 245 5501 65 1137 | 251 4085 90 1138 | 249 6351 45 1139 | 158 3412 100 1140 | 92 2643 70 1141 | 208 3435 40 1142 | 113 1225 100 1143 | 147 7515 85 1144 | 78 2475 90 1145 | 136 7216 100 1146 | 244 2279 80 1147 | 66 6206 100 1148 | 88 6768 30 1149 | 129 5252 85 1150 | 189 5939 35 1151 | 211 4547 70 1152 | 131 4102 75 1153 | 17 4953 70 1154 | 279 951 85 1155 | 148 7220 60 1156 | 236 5253 55 1157 | 54 5633 35 1158 | 114 2470 50 1159 | 220 2149 30 1160 | 124 3714 65 1161 | 252 7074 70 1162 | 11 6069 70 1163 | 109 4900 40 1164 | 12 5779 30 1165 | 289 6918 60 1166 | 43 5281 80 1167 | 167 4792 75 1168 | 34 6353 85 1169 | 129 7214 60 1170 | 169 6904 70 1171 | 232 7579 70 1172 | 289 2697 70 1173 | 187 6509 100 1174 | 10 3059 70 1175 | 198 5134 60 1176 | 72 59 65 1177 | 16 4520 40 1178 | 200 2157 80 1179 | 113 1597 75 1180 | 127 1404 85 1181 | 160 4630 60 1182 | 228 6406 90 1183 | 219 737 70 1184 | 197 960 90 1185 | 278 3204 60 1186 | 201 2043 5 1187 | 25 6348 80 1188 | 181 7061 100 1189 | 211 4635 90 1190 | 279 5252 75 1191 | 27 1750 55 1192 | 123 6367 95 1193 | 80 5402 75 1194 | 86 4902 70 1195 | 252 6889 30 1196 | 162 6506 75 1197 | 92 3 80 1198 | 62 1089 100 1199 | 218 3705 70 1200 | 286 4079 75 1201 | 254 2267 65 1202 | 167 4968 70 1203 | 4 1225 90 1204 | 288 2059 70 1205 | 18 6064 70 1206 | 167 6201 50 1207 | 88 7072 30 1208 | 215 4812 0 1209 | 183 2828 95 1210 | 205 6071 85 1211 | 208 3720 60 1212 | 132 948 85 1213 | 67 5774 55 1214 | 167 5184 100 1215 | 91 1578 85 1216 | 130 7556 80 1217 | 168 0 35 1218 | 242 4369 75 1219 | 28 2145 30 1220 | 159 3705 70 1221 | 201 2664 90 1222 | 57 2470 60 1223 | 256 5076 70 1224 | 240 7206 75 1225 | 6 4900 100 1226 | 171 1901 100 1227 | 100 5948 55 1228 | 36 4941 75 1229 | 73 5815 80 1230 | 185 2665 45 1231 | 93 1750 45 1232 | 93 5632 75 1233 | 132 7655 80 1234 | 193 1736 60 1235 | 238 2272 70 1236 | 82 7361 75 1237 | 149 1118 70 1238 | 77 3583 0 1239 | 169 2669 70 1240 | 135 4512 90 1241 | 40 4633 70 1242 | 170 1431 75 1243 | 200 3588 80 1244 | 33 955 80 1245 | 169 946 65 1246 | 122 3887 100 1247 | 129 948 100 1248 | 10 2835 65 1249 | 257 6707 60 1250 | 57 6062 100 1251 | 79 1566 100 1252 | 233 1757 100 1253 | 141 1916 95 1254 | 105 4515 100 1255 | 86 1570 70 1256 | 146 6353 15 1257 | 54 3063 40 1258 | 264 2468 80 1259 | 79 3059 50 1260 | 255 6795 90 1261 | 21 6201 60 1262 | 225 2460 55 1263 | 88 6061 95 1264 | 142 6500 65 1265 | 176 5522 75 1266 | 31 2461 60 1267 | 120 6712 70 1268 | 154 4386 95 1269 | 220 5643 70 1270 | 224 4777 70 1271 | 200 2498 70 1272 | 269 1106 40 1273 | 40 1882 85 1274 | 81 526 80 1275 | 166 5394 70 1276 | 143 532 45 1277 | 119 2834 80 1278 | 2 2644 40 1279 | 0 1225 95 1280 | 8 946 15 1281 | 70 2687 75 1282 | 146 3581 80 1283 | 274 696 75 1284 | 142 6203 40 1285 | 51 2656 70 1286 | 239 5244 80 1287 | 172 5126 80 1288 | 224 4503 95 1289 | 279 3583 80 1290 | 128 2468 60 1291 | 7 5948 90 1292 | 157 4515 100 1293 | 91 3069 70 1294 | 250 541 100 1295 | 194 5859 60 1296 | 165 2481 60 1297 | 282 7391 80 1298 | 160 5128 90 1299 | 196 21 20 1300 | 22 7074 65 1301 | 190 2828 75 1302 | 163 2145 35 1303 | 274 5473 55 1304 | 75 4393 65 1305 | 140 4079 75 1306 | 148 4393 90 1307 | 222 5436 50 1308 | 55 6809 65 1309 | 90 4107 35 1310 | 58 6916 50 1311 | 71 949 55 1312 | 284 6504 80 1313 | 159 1158 75 1314 | 10 6904 80 1315 | 198 3610 75 1316 | 216 5767 80 1317 | 265 6371 65 1318 | 223 946 85 1319 | 24 7072 75 1320 | 181 2472 75 1321 | 225 6506 80 1322 | 65 1556 60 1323 | 150 4078 100 1324 | 30 1892 65 1325 | 264 5367 65 1326 | 152 2467 95 1327 | 261 1090 85 1328 | 59 6348 40 1329 | 66 5957 90 1330 | 271 4501 95 1331 | 174 3901 30 1332 | 184 2275 10 1333 | 250 4441 20 1334 | 137 7512 85 1335 | 172 2146 10 1336 | 42 3581 70 1337 | 270 2970 85 1338 | 81 6206 90 1339 | 286 5633 40 1340 | 106 2837 75 1341 | 276 3368 10 1342 | 116 6354 75 1343 | 24 5254 5 1344 | 202 7066 60 1345 | 193 131 20 1346 | 47 3608 90 1347 | 14 543 80 1348 | 159 244 85 1349 | 201 7060 75 1350 | 35 7361 40 1351 | 59 6201 95 1352 | 189 6905 40 1353 | 78 7365 80 1354 | 264 4782 65 1355 | 145 5948 75 1356 | 2 7543 70 1357 | 90 4391 70 1358 | 224 3066 85 1359 | 209 2164 45 1360 | 157 4787 75 1361 | 156 3579 60 1362 | 64 3 70 1363 | 245 2275 60 1364 | 217 532 80 1365 | 247 4237 90 1366 | 62 5643 60 1367 | 144 1089 95 1368 | 91 3217 15 1369 | 247 4920 75 1370 | 277 205 80 1371 | 12 4643 40 1372 | 158 3118 100 1373 | 30 4521 70 1374 | 116 6381 55 1375 | 260 7068 55 1376 | 99 6506 80 1377 | 101 3086 0 1378 | 133 4078 40 1379 | 222 3241 75 1380 | 45 4641 85 1381 | 82 5643 70 1382 | 232 2684 60 1383 | 145 1737 80 1384 | 284 7229 80 1385 | 176 686 65 1386 | 52 1586 100 1387 | 0 5478 85 1388 | 265 5113 75 1389 | 204 5778 65 1390 | 144 394 75 1391 | 81 218 75 1392 | 48 7061 50 1393 | 216 7503 70 1394 | 262 5372 75 1395 | 269 5369 70 1396 | 242 5172 70 1397 | 92 2468 95 1398 | 106 5764 50 1399 | 156 6921 75 1400 | 246 7512 75 1401 | 223 4243 80 1402 | 18 6504 65 1403 | 230 7595 80 1404 | 138 3605 75 1405 | 62 21 100 1406 | 233 3577 70 1407 | 152 3581 0 1408 | 217 3782 80 1409 | 248 2475 85 1410 | 195 4824 80 1411 | 23 3904 85 1412 | 52 7233 100 1413 | 268 2275 35 1414 | 277 6070 90 1415 | 237 4935 75 1416 | 226 6502 60 1417 | 155 1882 100 1418 | 167 4953 90 1419 | 65 3418 60 1420 | 280 11 70 1421 | 271 3215 60 1422 | 73 7361 95 1423 | 161 6191 80 1424 | 70 404 90 1425 | 8 705 60 1426 | 192 1388 75 1427 | 46 5948 75 1428 | 141 6353 90 1429 | 110 1590 80 1430 | 287 4078 80 1431 | 229 1614 60 1432 | 131 1107 95 1433 | 48 1888 85 1434 | 251 7071 65 1435 | 116 26 60 1436 | 106 1093 60 1437 | 191 3404 75 1438 | 183 244 70 1439 | 89 5239 60 1440 | 173 6206 70 1441 | 144 21 90 1442 | 253 3063 30 1443 | 193 314 45 1444 | 107 1241 95 1445 | 196 947 90 1446 | 80 2467 100 1447 | 141 2467 90 1448 | 94 4081 70 1449 | 274 6698 70 1450 | 216 980 75 1451 | -------------------------------------------------------------------------------- /data/CAMRa2011/userRatingTest.txt: -------------------------------------------------------------------------------- 1 | 311 6197 50 2 | 390 968 65 3 | 113 4120 20 4 | 198 2971 80 5 | 242 810 60 6 | 176 946 100 7 | 329 3887 100 8 | 495 3921 45 9 | 70 3404 70 10 | 255 1396 80 11 | 534 6062 100 12 | 355 1399 95 13 | 500 5374 60 14 | 356 5940 75 15 | 107 5939 90 16 | 232 1090 85 17 | 400 4836 75 18 | 85 6070 75 19 | 582 6540 70 20 | 330 6370 30 21 | 204 3056 90 22 | 542 394 10 23 | 111 1747 80 24 | 23 5126 80 25 | 258 2260 65 26 | 152 2831 70 27 | 588 5764 45 28 | 5 1737 20 29 | 451 3093 20 30 | 490 542 80 31 | 188 4968 70 32 | 436 1089 100 33 | 469 4386 85 34 | 96 5379 85 35 | 405 4646 80 36 | 171 2468 80 37 | 200 4424 60 38 | 101 7074 85 39 | 340 2468 60 40 | 191 3066 85 41 | 352 2179 70 42 | 558 7060 60 43 | 419 4778 60 44 | 597 2832 85 45 | 209 6219 25 46 | 348 3896 100 47 | 14 6710 75 48 | 295 2048 80 49 | 143 2968 70 50 | 37 4384 75 51 | 1 692 80 52 | 149 1737 100 53 | 264 236 75 54 | 466 1109 70 55 | 460 1089 80 56 | 459 4235 75 57 | 152 2970 75 58 | 179 7556 80 59 | 566 217 45 60 | 99 217 75 61 | 240 4785 40 62 | 76 4247 20 63 | 210 6698 70 64 | 554 7515 65 65 | 305 6062 100 66 | 234 2960 40 67 | 143 2639 65 68 | 26 400 100 69 | 205 4633 95 70 | 515 3411 95 71 | 573 6074 80 72 | 118 402 70 73 | 34 1107 85 74 | 287 3060 10 75 | 446 946 100 76 | 481 1225 100 77 | 558 5938 80 78 | 160 6062 95 79 | 559 2718 65 80 | 288 1738 80 81 | 535 1755 60 82 | 571 3720 75 83 | 172 3057 75 84 | 550 4787 0 85 | 514 205 80 86 | 21 6209 80 87 | 141 2493 85 88 | 464 3190 85 89 | 272 4079 75 90 | 146 2970 85 91 | 521 5250 65 92 | 89 3056 75 93 | 245 7515 90 94 | 79 5366 70 95 | 8 3412 50 96 | 485 707 85 97 | 107 3066 75 98 | 223 3477 70 99 | 235 2044 95 100 | 241 4391 70 101 | 165 4376 90 102 | 69 6909 75 103 | 215 2832 60 104 | 455 1569 55 105 | 481 4109 90 106 | 561 947 90 107 | 482 2467 75 108 | 274 2059 70 109 | 554 4080 60 110 | 538 17 80 111 | 276 5781 75 112 | 395 5244 75 113 | 136 3061 75 114 | 182 4787 70 115 | 417 4953 70 116 | 333 1242 70 117 | 594 1572 70 118 | 18 3061 90 119 | 297 4777 60 120 | 470 452 45 121 | 500 1107 95 122 | 29 3215 60 123 | 284 1095 80 124 | 549 1754 65 125 | 12 6069 85 126 | 395 4381 65 127 | 521 2145 30 128 | 380 5394 95 129 | 465 4964 65 130 | 184 2144 55 131 | 341 1384 15 132 | 268 535 30 133 | 350 2259 85 134 | 564 4777 70 135 | 9 7206 90 136 | 495 5647 45 137 | 447 1737 75 138 | 86 2158 70 139 | 139 5643 80 140 | 319 4917 70 141 | 313 7205 85 142 | 550 5242 100 143 | 167 5948 30 144 | 318 4501 55 145 | 281 3581 70 146 | 468 1238 55 147 | 297 2472 70 148 | 438 5239 60 149 | 77 1785 80 150 | 421 544 75 151 | 178 256 100 152 | 426 6694 70 153 | 483 1753 95 154 | 41 686 65 155 | 423 3583 70 156 | 97 4902 75 157 | 412 559 85 158 | 417 4902 100 159 | 42 6917 65 160 | 597 7517 65 161 | 160 4968 95 162 | 84 1765 95 163 | 66 4777 25 164 | 136 2971 85 165 | 199 737 70 166 | 369 56 70 167 | 480 4102 75 168 | 155 5240 70 169 | 20 3412 90 170 | 325 1882 80 171 | 101 1089 90 172 | 22 2145 85 173 | 231 6424 45 174 | 596 400 85 175 | 183 4078 90 176 | 548 5254 80 177 | 540 1419 85 178 | 364 1751 90 179 | 413 6504 80 180 | 434 2835 70 181 | 213 5252 85 182 | 325 6905 40 183 | 228 5250 65 184 | 215 7205 100 185 | 102 2144 95 186 | 137 5495 70 187 | 60 4973 85 188 | 299 1736 80 189 | 121 6095 80 190 | 186 7060 65 191 | 356 1441 60 192 | 58 6348 80 193 | 552 4664 85 194 | 534 76 25 195 | 472 544 55 196 | 2 6905 30 197 | 417 3904 70 198 | 355 3212 75 199 | 465 5633 25 200 | 117 7061 50 201 | 397 5517 85 202 | 65 2837 75 203 | 373 6352 95 204 | 438 2146 95 205 | 210 1765 80 206 | 380 699 85 207 | 453 5366 15 208 | 182 7076 75 209 | 17 5662 10 210 | 580 4393 80 211 | 550 6206 75 212 | 389 1393 80 213 | 62 6703 40 214 | 497 4963 60 215 | 335 1399 75 216 | 148 2157 80 217 | 497 1323 80 218 | 498 3705 80 219 | 366 2046 70 220 | 46 2961 75 221 | 181 2652 70 222 | 45 2044 100 223 | 479 1900 90 224 | 119 254 70 225 | 244 2153 65 226 | 547 218 0 227 | 573 1106 90 228 | 91 3057 95 229 | 363 5436 50 230 | 331 2827 85 231 | 87 1558 50 232 | 507 3901 100 233 | 184 2960 85 234 | 62 5257 10 235 | 277 5369 65 236 | 523 2660 50 237 | 327 1225 85 238 | 551 7364 90 239 | 212 5367 65 240 | 336 3579 75 241 | 285 6221 60 242 | 183 5655 65 243 | 179 4803 95 244 | 159 2984 75 245 | 204 7505 95 246 | 27 3404 80 247 | 132 2044 100 248 | 175 7074 60 249 | 351 6206 70 250 | 243 4081 85 251 | 20 4078 80 252 | 81 1736 100 253 | 393 1439 90 254 | 44 543 60 255 | 144 4505 85 256 | 512 3583 0 257 | 580 2143 65 258 | 288 1401 85 259 | 291 7204 100 260 | 579 2058 85 261 | 45 2677 75 262 | 156 2643 60 263 | 356 5477 50 264 | 284 2146 10 265 | 262 5938 100 266 | 126 2146 90 267 | 464 5941 95 268 | 311 4664 70 269 | 491 5110 95 270 | 193 4561 35 271 | 489 3703 70 272 | 508 6506 75 273 | 101 6203 95 274 | 520 542 80 275 | 539 2169 75 276 | 66 2684 90 277 | 595 3720 75 278 | 189 1567 25 279 | 74 1396 90 280 | 36 526 80 281 | 133 5501 65 282 | 26 3071 85 283 | 108 7071 65 284 | 73 947 95 285 | 407 2164 45 286 | 180 3705 95 287 | 376 2655 50 288 | 425 1736 60 289 | 17 3901 70 290 | 128 3412 90 291 | 95 4513 95 292 | 4 4503 80 293 | 68 5633 60 294 | 565 3199 50 295 | 566 1736 80 296 | 526 1736 85 297 | 442 2837 50 298 | 159 4094 75 299 | 146 7655 80 300 | 92 1578 85 301 | 228 3063 30 302 | 110 2044 95 303 | 129 532 20 304 | 567 960 90 305 | 213 7214 60 306 | 122 2643 55 307 | 4 7512 80 308 | 464 949 85 309 | 216 5948 90 310 | 404 951 10 311 | 320 5659 85 312 | 99 705 60 313 | 98 3191 80 314 | 501 2275 100 315 | 406 4918 65 316 | 402 1757 70 317 | 474 1521 70 318 | 175 3057 75 319 | 141 1556 70 320 | 312 1556 60 321 | 310 1582 85 322 | 515 2970 75 323 | 589 2152 80 324 | 72 954 60 325 | 230 6894 80 326 | 158 2468 80 327 | 542 5113 0 328 | 315 1128 10 329 | 458 1748 10 330 | 489 545 60 331 | 109 2145 35 332 | 487 4792 15 333 | 492 3723 50 334 | 516 2476 70 335 | 30 4641 80 336 | 348 3720 80 337 | 189 4102 70 338 | 496 4792 80 339 | 36 5642 20 340 | 145 7391 80 341 | 116 4664 40 342 | 347 3942 25 343 | 185 7508 15 344 | 294 6893 75 345 | 206 2146 60 346 | 208 218 65 347 | 275 4513 65 348 | 251 21 90 349 | 332 5994 75 350 | 289 6353 80 351 | 369 6498 90 352 | 542 6219 100 353 | 502 7074 65 354 | 572 2146 100 355 | 256 6079 80 356 | 458 7653 0 357 | 0 4235 85 358 | 189 3412 60 359 | 592 5938 75 360 | 368 571 60 361 | 342 4387 40 362 | 584 3057 95 363 | 55 4392 70 364 | 418 5969 40 365 | 317 6889 30 366 | 137 1557 60 367 | 539 4506 75 368 | 82 6212 55 369 | 460 5939 85 370 | 251 5111 90 371 | 177 3404 65 372 | 492 5643 100 373 | 211 4512 75 374 | 350 218 45 375 | 230 6191 75 376 | 116 4501 100 377 | 559 7071 70 378 | 328 4646 75 379 | 354 4246 35 380 | 395 3904 85 381 | 47 3920 70 382 | 510 5633 70 383 | 311 6888 85 384 | 195 5485 50 385 | 242 6524 60 386 | 221 4641 85 387 | 331 5766 55 388 | 400 5762 65 389 | 374 3063 40 390 | 302 2059 80 391 | 558 6070 70 392 | 326 6710 85 393 | 284 1765 70 394 | 209 6512 80 395 | 290 695 70 396 | 390 2644 5 397 | 537 7206 50 398 | 234 5129 90 399 | 579 4389 70 400 | 533 5782 50 401 | 63 6895 65 402 | 589 5521 30 403 | 125 3896 60 404 | 309 1090 85 405 | 558 2275 10 406 | 504 2180 100 407 | 400 3057 95 408 | 530 1757 5 409 | 298 2472 60 410 | 447 6892 75 411 | 368 7060 75 412 | 429 5774 75 413 | 250 3720 90 414 | 432 4235 95 415 | 91 2260 30 416 | 588 1396 95 417 | 380 6219 95 418 | 219 4380 85 419 | 440 698 100 420 | 129 4376 100 421 | 501 5521 55 422 | 375 1223 65 423 | 82 5762 35 424 | 482 6062 100 425 | 405 6206 75 426 | 215 532 90 427 | 349 2493 75 428 | 297 4078 90 429 | 532 1570 100 430 | 209 5774 25 431 | 162 3057 55 432 | 371 2475 85 433 | 155 551 80 434 | 279 232 90 435 | 588 1107 55 436 | 54 4515 80 437 | 254 4111 75 438 | 223 2883 65 439 | 459 5248 80 440 | 145 2274 65 441 | 275 6370 60 442 | 336 6206 90 443 | 249 1664 70 444 | 295 5779 30 445 | 576 6062 90 446 | 540 6917 85 447 | 230 267 50 448 | 183 6512 80 449 | 301 6521 70 450 | 304 7216 100 451 | 590 4513 100 452 | 115 4263 85 453 | 100 3058 40 454 | 171 3579 70 455 | 116 3063 0 456 | 192 969 40 457 | 186 4111 60 458 | 418 4120 35 459 | 93 946 15 460 | 317 7074 70 461 | 562 3610 75 462 | 445 2965 80 463 | 22 2650 35 464 | 423 281 100 465 | 26 4237 100 466 | 482 2044 95 467 | 277 3454 30 468 | 9 5488 75 469 | 392 67 90 470 | 97 2461 60 471 | 496 5957 50 472 | 383 4900 60 473 | 196 4787 70 474 | 215 708 70 475 | 383 2470 55 476 | 553 5367 25 477 | 35 6219 100 478 | 564 4393 55 479 | 576 5111 80 480 | 9 3904 70 481 | 105 4836 70 482 | 143 3221 50 483 | 106 1109 90 484 | 327 6069 90 485 | 427 4079 80 486 | 453 4967 100 487 | 418 4557 45 488 | 221 3887 100 489 | 64 6061 75 490 | 597 3061 100 491 | 130 3400 60 492 | 578 1107 55 493 | 147 3420 75 494 | 67 5948 70 495 | 437 5719 60 496 | 536 395 70 497 | 329 6693 70 498 | 254 1749 80 499 | 327 5941 100 500 | 419 6916 50 501 | 415 1330 50 502 | 197 2674 55 503 | 92 256 75 504 | 72 2259 70 505 | 280 2054 70 506 | 567 6888 100 507 | 401 2694 80 508 | 512 402 0 509 | 367 707 85 510 | 78 393 30 511 | 318 4646 80 512 | 598 1404 70 513 | 462 4782 75 514 | 82 3061 75 515 | 426 7362 40 516 | 310 3118 100 517 | 341 23 85 518 | 577 3070 85 519 | 80 3217 85 520 | 178 5114 100 521 | 164 1757 80 522 | 569 3222 55 523 | 443 4919 60 524 | 419 0 65 525 | 172 1101 100 526 | 176 3889 65 527 | 60 4381 0 528 | 582 7655 75 529 | 600 7068 55 530 | 574 4630 85 531 | 288 5125 80 532 | 410 6527 55 533 | 268 6533 65 534 | 126 2144 100 535 | 416 7382 55 536 | 126 7086 65 537 | 438 238 70 538 | 82 6086 65 539 | 581 946 85 540 | 580 1404 60 541 | 93 708 60 542 | 122 2144 50 543 | 260 4165 50 544 | 258 5394 70 545 | 476 5778 75 546 | 527 3699 40 547 | 494 948 80 548 | 349 7216 85 549 | 318 2964 40 550 | 134 5642 100 551 | 84 2154 85 552 | 278 5764 0 553 | 65 1093 60 554 | 81 4237 90 555 | 1 4631 60 556 | 510 7061 90 557 | 2 234 100 558 | 231 4845 40 559 | 513 5522 75 560 | 358 5632 50 561 | 583 244 70 562 | 136 4085 85 563 | 445 4513 100 564 | 12 1572 85 565 | 308 6935 85 566 | 22 5941 65 567 | 595 5242 95 568 | 440 5939 100 569 | 430 3896 60 570 | 492 6908 70 571 | 39 4515 80 572 | 16 1103 100 573 | 257 1107 100 574 | 430 3202 70 575 | 546 1396 90 576 | 235 5778 95 577 | 123 244 85 578 | 18 5379 75 579 | 38 3898 65 580 | 252 5774 15 581 | 238 3427 70 582 | 411 4236 70 583 | 25 1736 75 584 | 75 2274 95 585 | 514 951 100 586 | 391 4630 60 587 | 444 5773 70 588 | 528 5948 75 589 | 375 1567 85 590 | 472 5778 75 591 | 577 6236 75 592 | 561 1901 70 593 | 32 3889 65 594 | 413 7229 80 595 | 74 7207 35 596 | 28 3583 55 597 | 468 6711 75 598 | 8 4777 80 599 | 131 5965 75 600 | 126 7204 80 601 | 286 5795 85 602 | 469 2043 90 603 | 536 3058 70 604 | 148 4949 60 605 | 67 5645 75 606 | 243 946 85 607 | 360 5114 85 608 | 179 3428 75 609 | 500 4963 50 610 | 406 1571 40 611 | 180 951 20 612 | 168 3742 85 613 | 477 2149 55 614 | 198 5478 85 615 | 121 1592 80 616 | 595 5643 85 617 | 399 7365 70 618 | 559 5831 75 619 | 420 1108 80 620 | 15 533 60 621 | 124 4441 20 622 | 135 2968 70 623 | 315 241 60 624 | 30 2971 80 625 | 132 5244 70 626 | 222 4241 55 627 | 105 5375 70 628 | 133 399 70 629 | 381 758 75 630 | 139 4240 60 631 | 300 4386 100 632 | 556 1107 85 633 | 267 2055 75 634 | 73 236 60 635 | 220 5470 30 636 | 63 2469 80 637 | 557 2472 80 638 | 76 4242 60 639 | 365 1765 85 640 | 392 6500 85 641 | 100 3063 30 642 | 149 7061 100 643 | 323 236 70 644 | 351 21 85 645 | 404 5254 5 646 | 16 526 80 647 | 339 2144 80 648 | 432 4392 50 649 | 79 5941 70 650 | 461 432 65 651 | 318 2294 70 652 | 372 3579 60 653 | 510 4512 90 654 | 515 1901 80 655 | 438 2650 65 656 | 279 4382 95 657 | 123 4663 85 658 | 24 7543 70 659 | 523 393 100 660 | 96 6206 80 661 | 107 6905 70 662 | 398 6902 90 663 | 426 7540 70 664 | 52 6211 45 665 | 565 7207 70 666 | 409 3887 100 667 | 71 6713 70 668 | 324 3915 85 669 | 190 6335 70 670 | 241 6506 60 671 | 86 7507 60 672 | 526 532 80 673 | 456 429 85 674 | 368 7560 65 675 | 324 5965 30 676 | 577 2320 80 677 | 134 5637 100 678 | 470 2550 60 679 | 355 241 75 680 | 271 4963 75 681 | 367 7543 70 682 | 59 7415 85 683 | 194 6346 80 684 | 377 2651 50 685 | 158 2504 80 686 | 165 3703 70 687 | 0 4777 60 688 | 118 4799 70 689 | 201 1119 75 690 | 556 2846 80 691 | 249 5859 60 692 | 91 4786 100 693 | 90 6335 65 694 | 390 4509 40 695 | 313 1391 20 696 | 590 2960 90 697 | 120 5643 90 698 | 334 1901 80 699 | 78 4534 80 700 | 543 1910 60 701 | 113 3741 60 702 | 144 4643 90 703 | 508 1108 75 704 | 41 951 100 705 | 555 4236 95 706 | 241 2146 80 707 | 264 4643 80 708 | 455 532 100 709 | 224 3720 100 710 | 298 532 65 711 | 110 5369 70 712 | 547 5802 50 713 | 423 244 100 714 | 200 5832 60 715 | 207 1225 100 716 | 221 5114 85 717 | 504 4524 50 718 | 480 6369 60 719 | 394 2493 85 720 | 21 1225 95 721 | 273 4790 45 722 | 9 3703 30 723 | 85 1243 50 724 | 386 3705 70 725 | 260 1107 85 726 | 222 5126 70 727 | 312 2832 80 728 | 339 1224 75 729 | 409 2145 100 730 | 285 7512 75 731 | 581 5244 45 732 | 443 4244 65 733 | 480 5384 75 734 | 107 5642 70 735 | 206 7386 65 736 | 316 4081 85 737 | 301 7066 60 738 | 459 6707 60 739 | 135 4277 75 740 | 127 7233 100 741 | 338 6207 60 742 | 596 2475 75 743 | 250 5118 10 744 | 598 6693 50 745 | 158 5771 85 746 | 525 5764 60 747 | 406 4920 75 748 | 227 4648 80 749 | 111 955 80 750 | 191 3454 45 751 | 463 6206 90 752 | 325 4509 70 753 | 394 5390 100 754 | 90 5939 35 755 | 194 1754 65 756 | 84 2959 70 757 | 273 544 85 758 | 59 5661 80 759 | 394 4385 10 760 | 68 3203 80 761 | 467 4635 35 762 | 378 2153 90 763 | 397 959 55 764 | 438 1396 40 765 | 379 6079 80 766 | 102 5941 50 767 | 199 3807 35 768 | 23 4393 85 769 | 280 6697 70 770 | 21 4786 80 771 | 296 6061 65 772 | 60 4785 80 773 | 343 3703 75 774 | 405 1225 80 775 | 497 2849 95 776 | 212 4376 85 777 | 413 5633 70 778 | 282 3208 70 779 | 269 429 30 780 | 422 1389 35 781 | 287 7514 50 782 | 276 7375 80 783 | 24 2644 40 784 | 385 1882 85 785 | 218 948 75 786 | 170 1103 65 787 | 287 6809 65 788 | 363 756 85 789 | 58 3202 25 790 | 409 3420 90 791 | 411 5126 80 792 | 541 695 80 793 | 256 3139 30 794 | 353 4531 60 795 | 341 4384 90 796 | 69 7258 15 797 | 439 4663 70 798 | 463 3 80 799 | 321 6222 0 800 | 99 5488 65 801 | 19 4085 70 802 | 199 3889 85 803 | 122 3595 80 804 | 395 3411 40 805 | 6 5642 30 806 | 391 2153 60 807 | 384 6116 40 808 | 229 21 80 809 | 361 4777 75 810 | 552 4562 60 811 | 405 400 85 812 | 6 5776 75 813 | 226 4424 70 814 | 485 4386 75 815 | 357 2149 30 816 | 528 6710 75 817 | 258 7371 65 818 | 163 6509 90 819 | 387 3435 40 820 | 247 2476 95 821 | 412 2269 90 822 | 143 4242 45 823 | 588 4664 75 824 | 13 2146 100 825 | 325 234 75 826 | 401 4824 80 827 | 584 5253 55 828 | 246 4141 70 829 | 450 2669 55 830 | 272 3206 35 831 | 486 530 20 832 | 577 555 85 833 | 340 5633 30 834 | 302 3579 65 835 | 277 218 80 836 | 525 7206 85 837 | 307 5006 30 838 | 169 1785 40 839 | 598 1737 80 840 | 292 2267 65 841 | 89 4393 90 842 | 529 2651 100 843 | 70 4787 100 844 | 28 4387 70 845 | 332 4786 20 846 | 377 4381 75 847 | 359 6905 60 848 | 92 1392 65 849 | 244 5764 80 850 | 337 6509 65 851 | 220 6362 50 852 | 600 4901 60 853 | 99 2274 80 854 | 350 2472 60 855 | 537 5632 70 856 | 394 2960 100 857 | 303 2970 75 858 | 251 394 75 859 | 427 2058 100 860 | 148 112 70 861 | 550 5273 85 862 | 481 6364 70 863 | 313 4511 20 864 | 174 1754 80 865 | 390 5273 80 866 | 167 3926 70 867 | 70 2043 80 868 | 306 6363 90 869 | 320 2294 85 870 | 490 3404 55 871 | 274 5940 60 872 | 88 3579 100 873 | 239 6070 55 874 | 591 4777 45 875 | 428 3714 65 876 | 568 7204 90 877 | 505 3368 10 878 | 360 1599 80 879 | 333 5114 45 880 | 586 3583 80 881 | 530 1570 45 882 | 211 4515 95 883 | 180 3579 100 884 | 149 4376 100 885 | 599 5114 70 886 | 43 7229 80 887 | 331 5124 80 888 | 246 24 55 889 | 543 7252 80 890 | 40 3920 25 891 | 118 1243 70 892 | 388 541 100 893 | 200 6208 80 894 | 123 5470 60 895 | 425 131 20 896 | 443 5127 80 897 | 272 6348 0 898 | 385 4900 70 899 | 193 4101 70 900 | 340 1095 85 901 | 304 1422 60 902 | 532 3082 90 903 | 390 6385 55 904 | 487 5558 70 905 | 80 3703 80 906 | 252 6069 70 907 | 2 4079 75 908 | 384 864 40 909 | 352 1764 80 910 | 549 6208 55 911 | 234 2275 35 912 | 328 3713 95 913 | 176 5366 80 914 | 397 2155 45 915 | 80 2712 35 916 | 82 2143 45 917 | 290 6894 65 918 | 444 6141 60 919 | 396 951 90 920 | 587 1095 10 921 | 569 5651 50 922 | 559 6763 40 923 | 28 4081 70 924 | 103 238 80 925 | 301 5485 70 926 | 239 12 55 927 | 80 6504 80 928 | 339 2493 80 929 | 49 2326 100 930 | 467 1882 70 931 | 461 7512 70 932 | 214 6768 30 933 | 286 3477 65 934 | 417 6347 85 935 | 343 5519 90 936 | 122 2461 40 937 | 106 7512 85 938 | 52 1614 60 939 | 572 4902 100 940 | 595 5113 85 941 | 513 686 65 942 | 359 3411 60 943 | 246 7070 60 944 | 378 5240 55 945 | 408 1421 75 946 | 240 394 55 947 | 193 4516 20 948 | 580 6697 80 949 | 501 5762 100 950 | 489 2144 90 951 | 436 21 100 952 | 32 3583 85 953 | 593 4386 95 954 | 52 4909 60 955 | 68 6062 60 956 | 68 5485 100 957 | 386 5393 75 958 | 455 6208 55 959 | 491 3714 80 960 | 379 7207 80 961 | 147 6367 95 962 | 247 3086 0 963 | 173 20 85 964 | 155 2495 75 965 | 418 1792 55 966 | 448 6406 90 967 | 255 7072 60 968 | 39 1384 75 969 | 56 5110 50 970 | 599 2459 80 971 | 270 1901 90 972 | 469 3583 80 973 | 300 7204 70 974 | 306 1882 90 975 | 67 3924 80 976 | 66 7361 40 977 | 596 5242 80 978 | 26 4389 50 979 | 529 4383 75 980 | 501 1882 80 981 | 141 543 85 982 | 338 6200 10 983 | 202 3887 25 984 | 12 21 20 985 | 71 1242 65 986 | 439 3579 80 987 | 452 3212 65 988 | 452 726 85 989 | 110 1106 40 990 | 407 1562 60 991 | 30 951 85 992 | 474 3819 75 993 | 22 4512 65 994 | 367 2498 70 995 | 446 2665 45 996 | 576 2468 70 997 | 330 3063 40 998 | 454 5775 10 999 | 136 2468 100 1000 | 407 1662 10 1001 | 562 2269 65 1002 | 380 7205 95 1003 | 326 5470 65 1004 | 39 4787 75 1005 | 157 5949 70 1006 | 252 4393 55 1007 | 20 6203 70 1008 | 114 1882 60 1009 | 337 3581 65 1010 | 499 2048 95 1011 | 364 4963 85 1012 | 560 5772 90 1013 | 581 6711 70 1014 | 518 6904 80 1015 | 466 4081 60 1016 | 112 4 75 1017 | 422 6061 80 1018 | 469 5776 80 1019 | 504 1224 70 1020 | 83 5485 80 1021 | 375 947 85 1022 | 533 1375 50 1023 | 16 400 80 1024 | 357 5643 70 1025 | 374 5776 90 1026 | 582 6698 60 1027 | 331 2832 70 1028 | 318 2834 100 1029 | 283 3708 65 1030 | 506 4630 80 1031 | 3 6707 55 1032 | 256 5374 95 1033 | 184 6335 100 1034 | 311 1108 70 1035 | 159 6077 75 1036 | 441 4383 100 1037 | 286 2468 70 1038 | 216 3411 85 1039 | 61 2697 70 1040 | 566 7074 80 1041 | 429 4092 75 1042 | 114 2832 50 1043 | 102 4515 65 1044 | 53 5506 100 1045 | 13 955 80 1046 | 181 7505 65 1047 | 521 7204 85 1048 | 498 4501 55 1049 | 371 1914 70 1050 | 166 6203 80 1051 | 175 2960 50 1052 | 381 3904 85 1053 | 362 1936 60 1054 | 207 4802 65 1055 | 354 686 50 1056 | 334 3066 55 1057 | 228 618 90 1058 | 27 5374 90 1059 | 546 4081 95 1060 | 392 6560 70 1061 | 535 5159 95 1062 | 185 2275 70 1063 | 108 946 85 1064 | 476 1882 75 1065 | 18 532 45 1066 | 53 6559 90 1067 | 408 6219 60 1068 | 357 395 65 1069 | 154 3718 70 1070 | 541 5521 80 1071 | 350 3411 80 1072 | 434 5644 75 1073 | 13 1757 100 1074 | 445 2467 95 1075 | 157 2156 75 1076 | 598 7206 70 1077 | 156 3714 60 1078 | 568 4515 90 1079 | 553 4967 15 1080 | 132 232 60 1081 | 186 949 45 1082 | 403 4787 75 1083 | 340 1572 70 1084 | 222 4389 55 1085 | 262 5110 85 1086 | 258 2144 90 1087 | 537 1757 80 1088 | 556 3579 90 1089 | 368 3605 60 1090 | 308 2331 90 1091 | 142 4515 100 1092 | 302 734 60 1093 | 280 7376 30 1094 | 211 1570 70 1095 | 181 395 65 1096 | 546 5127 90 1097 | 123 4264 70 1098 | 271 555 70 1099 | 265 5941 85 1100 | 380 2143 80 1101 | 308 1388 60 1102 | 56 3579 90 1103 | 146 1109 95 1104 | 187 2073 75 1105 | 253 575 75 1106 | 140 6506 80 1107 | 234 539 95 1108 | 255 419 65 1109 | 509 947 35 1110 | 361 1572 50 1111 | 555 4515 100 1112 | 552 7077 65 1113 | 334 7071 50 1114 | 442 2468 85 1115 | 160 5632 85 1116 | 91 3705 100 1117 | 96 4659 80 1118 | 536 7229 100 1119 | 503 2961 75 1120 | 190 2269 60 1121 | 389 1244 70 1122 | 277 2055 70 1123 | 345 7445 80 1124 | 412 5635 85 1125 | 1 4384 70 1126 | 382 7216 55 1127 | 569 2674 75 1128 | 593 6893 60 1129 | 314 2468 95 1130 | 212 1756 75 1131 | 121 4279 80 1132 | 475 6918 60 1133 | 187 88 60 1134 | 384 5938 75 1135 | 590 4376 100 1136 | 326 5948 75 1137 | 574 2054 75 1138 | 104 26 70 1139 | 322 4777 60 1140 | 210 6355 60 1141 | 159 4777 35 1142 | 381 5244 70 1143 | 466 4664 50 1144 | 490 1897 65 1145 | 103 1118 70 1146 | 128 2686 70 1147 | 526 4712 80 1148 | 140 2460 55 1149 | 203 3071 85 1150 | 116 1900 50 1151 | 304 7365 80 1152 | 388 1761 40 1153 | 414 3788 70 1154 | 144 3583 80 1155 | 407 1969 65 1156 | 490 6352 80 1157 | 97 7512 70 1158 | 572 217 55 1159 | 474 6918 75 1160 | 43 2145 80 1161 | 40 255 70 1162 | 17 6887 0 1163 | 204 3058 70 1164 | 449 4080 35 1165 | 190 394 75 1166 | 495 1571 30 1167 | 47 2665 80 1168 | 15 401 100 1169 | 335 6207 80 1170 | 567 2048 100 1171 | 195 543 100 1172 | 65 1585 80 1173 | 352 7061 60 1174 | 457 5778 90 1175 | 456 3579 65 1176 | 413 3057 75 1177 | 563 400 75 1178 | 193 6895 60 1179 | 119 7560 70 1180 | 431 5389 85 1181 | 388 1898 45 1182 | 519 2054 75 1183 | 257 695 100 1184 | 18 1738 90 1185 | 425 3350 35 1186 | 448 4396 40 1187 | 522 3415 70 1188 | 293 6381 55 1189 | 328 5643 70 1190 | 67 3705 80 1191 | 224 7678 80 1192 | 27 5771 80 1193 | 161 218 35 1194 | 462 5113 70 1195 | 457 7074 75 1196 | 44 4409 65 1197 | 151 236 65 1198 | 182 5771 75 1199 | 30 5469 75 1200 | 556 3411 80 1201 | 351 5941 90 1202 | 2 5944 45 1203 | 121 6369 80 1204 | 162 2269 75 1205 | 123 4383 70 1206 | 89 7205 40 1207 | 532 5242 95 1208 | 377 5385 60 1209 | 406 6698 65 1210 | 378 3333 85 1211 | 202 3 95 1212 | 150 5389 80 1213 | 445 3581 0 1214 | 48 6908 35 1215 | 509 5477 100 1216 | 333 2837 80 1217 | 435 5 55 1218 | 140 1897 70 1219 | 206 1389 25 1220 | 477 1430 65 1221 | 106 698 90 1222 | 415 3109 50 1223 | 155 5642 5 1224 | 481 4237 90 1225 | 356 2055 80 1226 | 299 6390 50 1227 | 250 2109 65 1228 | 90 6918 80 1229 | 488 1747 60 1230 | 10 1740 70 1231 | 291 948 100 1232 | 324 7507 65 1233 | 406 3934 60 1234 | 205 3595 80 1235 | 34 4900 40 1236 | 253 5113 75 1237 | 113 3454 40 1238 | 420 1570 0 1239 | 191 2157 80 1240 | 251 1089 95 1241 | 570 3615 50 1242 | 196 544 75 1243 | 535 1942 95 1244 | 557 5141 80 1245 | 592 7204 70 1246 | 503 2058 80 1247 | 488 7364 75 1248 | 351 4078 50 1249 | 276 4385 75 1250 | 187 5632 75 1251 | 545 1900 75 1252 | 457 3412 100 1253 | 527 3896 40 1254 | 601 6201 85 1255 | 140 2143 45 1256 | 421 5771 45 1257 | 524 2834 80 1258 | 37 2493 85 1259 | 355 6001 85 1260 | 203 5240 90 1261 | 547 7215 5 1262 | 144 3194 80 1263 | 111 2274 50 1264 | 180 7361 75 1265 | 7 4236 15 1266 | 316 4080 100 1267 | 414 980 75 1268 | 427 6201 95 1269 | 236 4636 40 1270 | 560 5134 60 1271 | 152 5941 70 1272 | 124 5791 45 1273 | 454 3 90 1274 | 296 6506 40 1275 | 453 2647 10 1276 | 44 3453 65 1277 | 499 3901 75 1278 | 106 1225 100 1279 | 161 5643 80 1280 | 257 5762 100 1281 | 118 4786 75 1282 | 484 5633 70 1283 | 196 1773 80 1284 | 471 2969 80 1285 | 537 5141 50 1286 | 412 4515 100 1287 | 347 2677 55 1288 | 469 1095 30 1289 | 219 1090 90 1290 | 426 862 65 1291 | 536 1089 80 1292 | 584 6340 75 1293 | 259 4236 85 1294 | 214 6061 95 1295 | 25 4630 100 1296 | 175 4376 95 1297 | 321 2283 30 1298 | 453 5967 100 1299 | 354 5250 65 1300 | 376 6369 80 1301 | 514 4079 70 1302 | 24 21 75 1303 | 345 2318 70 1304 | 281 7072 70 1305 | 343 6509 85 1306 | 404 6251 75 1307 | 505 295 35 1308 | 98 3926 85 1309 | 309 4818 65 1310 | 412 2470 90 1311 | 478 7071 80 1312 | 465 2965 60 1313 | 576 3399 75 1314 | 545 6364 60 1315 | 348 5939 85 1316 | 131 3400 65 1317 | 259 3702 60 1318 | 14 4240 70 1319 | 205 3070 35 1320 | 69 1574 90 1321 | 293 6107 70 1322 | 363 3974 75 1323 | 363 3233 80 1324 | 373 7074 90 1325 | 573 4513 60 1326 | 424 7216 70 1327 | 157 973 70 1328 | 484 7218 35 1329 | 475 2043 65 1330 | 178 6509 100 1331 | 573 4292 0 1332 | 115 4503 85 1333 | 486 6191 80 1334 | 21 6709 70 1335 | 88 1737 100 1336 | 585 2967 85 1337 | 238 3703 55 1338 | 487 6089 50 1339 | 129 2493 40 1340 | 371 748 70 1341 | 499 1396 75 1342 | 261 6205 80 1343 | 266 3720 60 1344 | 578 7365 60 1345 | 530 2984 50 1346 | 466 21 70 1347 | 36 2146 95 1348 | 509 7229 45 1349 | 274 3702 80 1350 | 522 2827 85 1351 | 228 1107 35 1352 | 71 4902 75 1353 | 233 3068 40 1354 | 213 7068 85 1355 | 555 400 95 1356 | 131 4111 85 1357 | 4 4393 75 1358 | 569 5474 45 1359 | 62 717 55 1360 | 46 434 70 1361 | 144 1572 80 1362 | 203 7361 95 1363 | 77 3256 70 1364 | 70 6887 100 1365 | 434 1736 60 1366 | 283 4078 80 1367 | 519 948 85 1368 | 57 1090 25 1369 | 349 244 35 1370 | 276 7515 80 1371 | 385 1107 70 1372 | 523 1882 95 1373 | 568 3924 70 1374 | 164 4648 70 1375 | 488 1224 70 1376 | 145 947 100 1377 | 283 3888 20 1378 | 388 5379 70 1379 | 208 3063 0 1380 | 485 695 65 1381 | 90 1736 95 1382 | 451 2078 45 1383 | 403 6357 100 1384 | 208 6201 50 1385 | 517 3202 65 1386 | 386 2294 60 1387 | 323 530 65 1388 | 311 2834 80 1389 | 154 946 20 1390 | 42 1569 75 1391 | 531 2647 75 1392 | 523 3217 100 1393 | 229 6203 85 1394 | 193 4094 55 1395 | 314 1397 75 1396 | 564 4503 95 1397 | 256 766 75 1398 | 525 4101 60 1399 | 75 6354 75 1400 | 478 5521 75 1401 | 462 2146 85 1402 | 7 694 30 1403 | 448 5510 60 1404 | 163 6205 80 1405 | 508 2831 65 1406 | 225 5393 100 1407 | 585 3714 75 1408 | 440 3579 100 1409 | 151 2043 70 1410 | 168 3608 90 1411 | 479 1738 60 1412 | 501 1586 55 1413 | 321 954 10 1414 | 13 7361 100 1415 | 32 3082 90 1416 | 518 5948 70 1417 | 93 1915 75 1418 | 146 2269 35 1419 | 402 3063 35 1420 | 218 1888 85 1421 | 153 4080 75 1422 | 387 2846 65 1423 | 321 4660 20 1424 | 453 235 90 1425 | 307 2167 50 1426 | 207 951 75 1427 | 195 7361 100 1428 | 551 394 80 1429 | 321 7595 80 1430 | 334 4782 75 1431 | 389 5632 75 1432 | 6 4078 40 1433 | 85 3404 75 1434 | 561 4963 80 1435 | 153 429 90 1436 | 261 4247 100 1437 | 340 414 85 1438 | 425 60 60 1439 | 95 6206 100 1440 | 575 5938 80 1441 | 489 1737 80 1442 | 555 5254 70 1443 | 537 21 100 1444 | 219 1901 100 1445 | 33 6069 35 1446 | 571 5369 55 1447 | 250 6905 60 1448 | 503 5776 90 1449 | 468 1388 70 1450 | 544 6600 60 1451 | 290 4376 80 1452 | 459 6918 70 1453 | 522 2499 50 1454 | 377 2069 75 1455 | 233 5632 85 1456 | 374 4515 70 1457 | 105 5367 65 1458 | 474 1272 80 1459 | 143 2686 50 1460 | 396 7205 60 1461 | 59 6251 80 1462 | 594 1882 85 1463 | 73 2984 70 1464 | 307 4777 85 1465 | 508 6335 70 1466 | 267 7091 70 1467 | 55 5939 75 1468 | 218 5250 70 1469 | 298 1590 80 1470 | 324 4936 70 1471 | 11 5251 85 1472 | 449 7089 50 1473 | 277 2144 100 1474 | 471 3420 85 1475 | 52 2146 60 1476 | 79 686 40 1477 | 227 5378 90 1478 | 496 952 25 1479 | 591 2146 65 1480 | 240 3 85 1481 | 177 4900 100 1482 | 269 3217 25 1483 | 431 1238 15 1484 | 43 6367 75 1485 | 257 3720 80 1486 | 131 2043 80 1487 | 552 3 10 1488 | 29 7220 85 1489 | 365 4836 90 1490 | 254 946 75 1491 | 179 7204 0 1492 | 213 1888 75 1493 | 416 4784 15 1494 | 3 1566 80 1495 | 465 5172 70 1496 | 399 21 15 1497 | 39 4243 85 1498 | 538 2832 80 1499 | 29 4501 95 1500 | 589 5501 35 1501 | 109 5764 50 1502 | 130 1107 80 1503 | 22 5953 70 1504 | 65 6357 85 1505 | 398 4262 90 1506 | 156 236 70 1507 | 47 3923 75 1508 | 304 2277 30 1509 | 370 4727 75 1510 | 452 5110 70 1511 | 121 1398 90 1512 | 497 2017 75 1513 | 463 5070 50 1514 | 405 1737 95 1515 | 231 4941 75 1516 | 96 5277 85 1517 | 493 6510 90 1518 | 125 698 70 1519 | 544 5424 85 1520 | 478 7263 100 1521 | 509 2469 100 1522 | 305 6238 85 1523 | 535 5394 70 1524 | 466 2965 75 1525 | 244 4376 30 1526 | 450 3723 60 1527 | 255 6693 60 1528 | 383 2650 30 1529 | 207 5506 70 1530 | 430 3222 40 1531 | 130 4501 100 1532 | 231 6265 40 1533 | 434 59 65 1534 | 499 1093 75 1535 | 12 5643 65 1536 | 410 0 50 1537 | 564 3720 90 1538 | 283 3195 55 1539 | 506 3400 75 1540 | 498 5165 85 1541 | 57 6061 65 1542 | 132 7060 70 1543 | 522 2653 85 1544 | 379 7077 70 1545 | 16 2461 85 1546 | 120 2467 100 1547 | 526 2327 35 1548 | 347 1750 55 1549 | 342 5944 95 1550 | 578 5948 55 1551 | 263 3204 60 1552 | 182 6069 70 1553 | 300 4630 70 1554 | 94 2179 85 1555 | 338 238 80 1556 | 539 6922 70 1557 | 520 7204 90 1558 | 115 2044 60 1559 | 139 4237 70 1560 | 587 2144 0 1561 | 109 3579 80 1562 | 309 3581 100 1563 | 101 5375 100 1564 | 186 7068 70 1565 | 267 7205 65 1566 | 518 3059 70 1567 | 502 4243 70 1568 | 475 4840 65 1569 | 225 5240 55 1570 | 583 4243 65 1571 | 81 3436 90 1572 | 49 3900 100 1573 | 17 2468 80 1574 | 294 4109 80 1575 | 115 7077 80 1576 | 64 2640 90 1577 | 200 1243 85 1578 | 374 5633 35 1579 | 156 2143 70 1580 | 263 1387 25 1581 | 155 4671 80 1582 | 339 5648 80 1583 | 541 5948 80 1584 | 315 1897 70 1585 | 384 4540 30 1586 | 543 1884 60 1587 | 401 3196 75 1588 | 278 401 0 1589 | 259 3217 15 1590 | 549 7086 50 1591 | 591 3583 75 1592 | 457 541 85 1593 | 595 7072 85 1594 | 280 6700 70 1595 | 39 5366 75 1596 | 458 7506 15 1597 | 240 7206 25 1598 | 238 7517 50 1599 | 40 244 90 1600 | 399 1437 0 1601 | 138 262 90 1602 | 369 3577 70 1603 | 332 6618 65 1604 | 527 2684 60 1605 | 242 2848 75 1606 | 127 2832 15 1607 | 529 6697 100 1608 | 43 3900 90 1609 | 449 1095 35 1610 | 185 6203 75 1611 | 403 5488 75 1612 | 278 6509 95 1613 | 231 1029 75 1614 | 10 7361 100 1615 | 593 3583 80 1616 | 19 401 80 1617 | 135 3057 60 1618 | 42 2259 90 1619 | 151 6200 80 1620 | 313 6723 55 1621 | 58 1568 10 1622 | 300 4917 80 1623 | 103 5632 65 1624 | 237 5389 80 1625 | 31 5126 75 1626 | 482 2144 100 1627 | 550 217 70 1628 | 201 4237 70 1629 | 292 4247 85 1630 | 567 7077 90 1631 | 303 4237 95 1632 | 117 1118 85 1633 | 399 3723 0 1634 | 587 3419 70 1635 | 331 785 75 1636 | 199 1246 40 1637 | 562 2458 70 1638 | 161 6200 65 1639 | 130 1882 100 1640 | 71 6335 60 1641 | 78 4386 90 1642 | 433 3782 80 1643 | 244 7512 80 1644 | 129 7519 45 1645 | 25 2832 100 1646 | 168 3233 85 1647 | 88 2960 80 1648 | 575 6219 75 1649 | 472 287 70 1650 | 454 237 50 1651 | 149 4078 70 1652 | 590 4515 100 1653 | 329 5635 30 1654 | 365 3605 75 1655 | 29 980 85 1656 | 42 3063 50 1657 | 30 702 85 1658 | 461 3583 80 1659 | 601 6887 80 1660 | 524 1756 75 1661 | 526 7083 75 1662 | 38 6353 15 1663 | 410 4633 70 1664 | 336 218 75 1665 | 507 980 60 1666 | 248 3579 90 1667 | 55 393 65 1668 | 202 4786 100 1669 | 558 7206 90 1670 | 291 2157 50 1671 | 417 7072 45 1672 | 289 1757 65 1673 | 376 6693 0 1674 | 296 1892 50 1675 | 274 7060 50 1676 | 425 314 45 1677 | 483 5240 45 1678 | 366 2674 90 1679 | 282 3429 70 1680 | 312 2650 75 1681 | 435 393 55 1682 | 553 4120 5 1683 | 338 6500 65 1684 | 436 5643 60 1685 | 237 6219 0 1686 | 188 5184 100 1687 | 237 2044 80 1688 | 471 4079 75 1689 | 519 7655 80 1690 | 566 2828 75 1691 | 94 2969 100 1692 | 141 4512 40 1693 | 225 4393 65 1694 | 264 6795 90 1695 | 203 2467 100 1696 | 194 6196 60 1697 | 319 1893 45 1698 | 493 5076 70 1699 | 194 4376 60 1700 | 2 5940 55 1701 | 459 1900 65 1702 | 243 4080 65 1703 | 456 413 85 1704 | 76 5944 100 1705 | 419 1755 60 1706 | 95 5957 90 1707 | 292 946 80 1708 | 128 4109 100 1709 | 387 5769 20 1710 | 463 4921 60 1711 | 314 2058 90 1712 | 260 3606 85 1713 | 502 7361 80 1714 | 431 6077 85 1715 | 587 4085 0 1716 | 597 1225 100 1717 | 61 4952 45 1718 | 563 1914 80 1719 | 267 2831 65 1720 | 473 7072 30 1721 | 217 5136 100 1722 | 557 3898 45 1723 | 64 6197 60 1724 | 273 6506 75 1725 | 154 1566 75 1726 | 59 4809 65 1727 | 571 4389 45 1728 | 57 6944 60 1729 | 335 6887 80 1730 | 150 2153 80 1731 | 198 6382 10 1732 | 303 1089 80 1733 | 505 5927 35 1734 | 600 6200 65 1735 | 597 960 60 1736 | 53 4545 100 1737 | 521 5110 65 1738 | 4 2260 60 1739 | 546 2147 75 1740 | 344 3705 85 1741 | 373 5764 75 1742 | 89 2834 100 1743 | 500 5648 100 1744 | 46 1242 100 1745 | 163 4915 70 1746 | 260 4935 75 1747 | 161 6367 100 1748 | 252 4785 30 1749 | 589 6894 70 1750 | 177 543 95 1751 | 291 3217 50 1752 | 166 3202 80 1753 | 364 4933 100 1754 | 439 2971 90 1755 | 26 4386 100 1756 | 195 3059 50 1757 | 86 947 75 1758 | 349 2153 80 1759 | 245 6070 75 1760 | 120 543 85 1761 | 120 7206 75 1762 | 248 5485 90 1763 | 359 1107 90 1764 | 513 5647 75 1765 | 66 7555 80 1766 | 333 1736 65 1767 | 345 5283 95 1768 | 112 6693 60 1769 | 282 1384 65 1770 | 294 5379 80 1771 | 202 2655 40 1772 | 161 6079 85 1773 | 507 1756 75 1774 | 281 4654 85 1775 | 103 2144 80 1776 | 344 6347 75 1777 | 365 5277 60 1778 | 446 429 30 1779 | 524 4240 70 1780 | 461 5252 75 1781 | 34 6201 75 1782 | 511 698 50 1783 | 0 2144 85 1784 | 116 5250 70 1785 | 272 3061 100 1786 | 548 5941 75 1787 | 224 6070 90 1788 | 326 6506 75 1789 | 516 401 80 1790 | 257 4646 75 1791 | 408 1108 90 1792 | 451 2481 60 1793 | 236 6984 40 1794 | 261 1586 100 1795 | 360 4640 75 1796 | 447 399 70 1797 | 253 708 65 1798 | 35 3058 25 1799 | 354 4900 65 1800 | 511 7364 50 1801 | 518 2835 65 1802 | 468 7080 80 1803 | 382 7220 80 1804 | 360 1585 55 1805 | 486 5499 65 1806 | 329 2143 90 1807 | 87 954 50 1808 | 538 5815 80 1809 | 50 7220 90 1810 | 74 2828 50 1811 | 18 3217 80 1812 | 84 401 85 1813 | 243 4963 30 1814 | 379 2317 80 1815 | 460 4836 100 1816 | 306 6070 85 1817 | 223 1404 45 1818 | 173 5248 75 1819 | 598 4648 80 1820 | 504 2908 100 1821 | 294 4792 40 1822 | 465 2070 60 1823 | 153 7205 75 1824 | 473 1095 70 1825 | 21 5774 50 1826 | 60 1000 80 1827 | 146 4967 25 1828 | 227 7515 55 1829 | 480 708 85 1830 | 491 4674 75 1831 | 400 2075 55 1832 | 413 948 85 1833 | 131 948 90 1834 | 482 5366 90 1835 | 183 5795 75 1836 | 127 1095 70 1837 | 565 2833 85 1838 | 404 5644 15 1839 | 531 2468 70 1840 | 353 5777 70 1841 | 283 3583 85 1842 | 496 232 80 1843 | 481 3586 40 1844 | 383 6061 50 1845 | 235 6201 95 1846 | 483 6768 65 1847 | 154 7206 55 1848 | 173 1914 75 1849 | 286 3945 50 1850 | 452 4913 15 1851 | 362 5244 80 1852 | 471 6197 65 1853 | 322 2153 45 1854 | 160 3742 90 1855 | 567 2975 80 1856 | 392 5820 80 1857 | 72 2468 70 1858 | 138 2467 90 1859 | 328 3887 100 1860 | 507 4902 85 1861 | 76 1627 85 1862 | 274 3412 0 1863 | 230 7515 75 1864 | 152 2461 70 1865 | 391 6219 70 1866 | 279 7386 80 1867 | 505 4069 60 1868 | 7 3064 100 1869 | 487 5471 0 1870 | 190 4385 55 1871 | 387 2831 75 1872 | 61 5485 85 1873 | 586 21 75 1874 | 509 2964 55 1875 | 533 4771 85 1876 | 7 5366 15 1877 | 513 40 80 1878 | 382 3945 55 1879 | 307 965 80 1880 | 106 4393 90 1881 | 108 4236 95 1882 | 383 4237 85 1883 | 555 4135 85 1884 | 601 4102 85 1885 | 523 2837 80 1886 | 348 3705 60 1887 | 56 5366 75 1888 | 313 4245 15 1889 | 516 1431 75 1890 | 4 4787 60 1891 | 220 1892 65 1892 | 348 947 75 1893 | 124 6391 50 1894 | 527 2650 50 1895 | 48 416 90 1896 | 104 2321 60 1897 | 201 2059 75 1898 | 530 2145 35 1899 | 297 7072 50 1900 | 128 2837 75 1901 | 443 414 75 1902 | 232 5382 70 1903 | 396 5519 30 1904 | 599 1397 85 1905 | 42 3408 50 1906 | 424 543 55 1907 | 211 3901 65 1908 | 456 6887 95 1909 | 295 4643 40 1910 | 381 5240 80 1911 | 364 4108 95 1912 | 11 4659 90 1913 | 264 2984 80 1914 | 237 3058 0 1915 | 305 1397 80 1916 | 87 559 55 1917 | 454 2472 75 1918 | 366 6371 65 1919 | 15 2498 70 1920 | 29 55 75 1921 | 451 2100 95 1922 | 235 3703 95 1923 | 222 2274 90 1924 | 302 7502 70 1925 | 305 4805 80 1926 | 458 3578 40 1927 | 279 7363 75 1928 | 357 7377 40 1929 | 388 7669 80 1930 | 175 393 75 1931 | 529 5369 75 1932 | 485 2468 75 1933 | 189 5938 75 1934 | 36 6712 70 1935 | 153 1107 75 1936 | 499 5794 70 1937 | 296 5485 50 1938 | 539 2279 80 1939 | 461 951 85 1940 | 245 2832 85 1941 | 259 6508 55 1942 | 69 3262 75 1943 | 150 6353 90 1944 | 206 532 50 1945 | 545 1901 65 1946 | 259 21 75 1947 | 397 1245 65 1948 | 314 4236 80 1949 | 524 5771 70 1950 | 422 1241 95 1951 | 245 4078 85 1952 | 135 7386 85 1953 | 178 4081 80 1954 | 17 1571 90 1955 | 136 1241 80 1956 | 532 3583 85 1957 | 292 540 55 1958 | 506 5389 80 1959 | 444 4280 65 1960 | 414 7503 70 1961 | 141 1903 85 1962 | 455 5283 55 1963 | 572 6904 75 1964 | 337 394 35 1965 | 54 6107 25 1966 | 344 7205 85 1967 | 15 402 100 1968 | 397 2076 65 1969 | 23 7391 90 1970 | 119 543 75 1971 | 247 1089 100 1972 | 328 7362 85 1973 | 518 2964 15 1974 | 450 3702 35 1975 | 181 4253 45 1976 | 216 5374 25 1977 | 137 6697 90 1978 | 591 533 60 1979 | 594 4389 80 1980 | 592 3901 65 1981 | 54 5473 55 1982 | 293 3603 55 1983 | 102 1566 90 1984 | 441 3217 90 1985 | 583 401 65 1986 | 322 5240 85 1987 | 27 7072 75 1988 | 182 6698 70 1989 | 544 1234 75 1990 | 209 5778 65 1991 | 534 960 30 1992 | 517 1388 0 1993 | 263 7365 85 1994 | 457 5378 70 1995 | 290 4792 70 1996 | 248 7216 90 1997 | 126 5771 50 1998 | 428 7536 65 1999 | 392 4635 90 2000 | 467 5110 70 2001 | 247 3720 95 2002 | 233 2157 30 2003 | 553 6700 60 2004 | 439 6707 100 2005 | 33 5938 85 2006 | 316 4515 85 2007 | 579 6071 85 2008 | 375 2059 80 2009 | 312 4277 60 2010 | 198 5766 55 2011 | 93 695 100 2012 | 10 1406 40 2013 | 601 2653 60 2014 | 147 1240 80 2015 | 324 2384 75 2016 | 415 1507 50 2017 | 239 2180 40 2018 | 34 4633 45 2019 | 436 6711 25 2020 | 3 4641 70 2021 | 83 695 80 2022 | 569 6494 60 2023 | 398 5257 80 2024 | 113 2472 60 2025 | 253 4386 65 2026 | 253 4080 80 2027 | 289 5764 10 2028 | 61 5242 75 2029 | 45 7070 80 2030 | 520 4526 90 2031 | 249 2046 55 2032 | 424 6948 95 2033 | 166 7515 80 2034 | 188 4953 90 2035 | 132 1566 100 2036 | 402 6904 70 2037 | 219 7655 90 2038 | 14 1240 85 2039 | 105 960 65 2040 | 242 7151 80 2041 | 147 5124 80 2042 | 156 5389 75 2043 | 31 5633 40 2044 | 308 2269 70 2045 | 197 527 75 2046 | 424 3579 65 2047 | 236 5950 40 2048 | 268 219 60 2049 | 304 6070 65 2050 | 531 2046 5 2051 | 3 4509 65 2052 | 73 526 50 2053 | 493 3544 70 2054 | 69 3111 65 2055 | 74 4078 100 2056 | 184 5485 100 2057 | 441 4109 85 2058 | 133 2904 85 2059 | 117 5379 75 2060 | 50 5939 90 2061 | 590 5113 90 2062 | 498 7507 35 2063 | 370 2687 85 2064 | 376 404 95 2065 | 11 5366 85 2066 | 549 994 70 2067 | 409 6700 70 2068 | 346 5767 80 2069 | 511 5635 100 2070 | 361 4664 35 2071 | 254 5632 75 2072 | 185 7362 80 2073 | 347 218 85 2074 | 284 5488 20 2075 | 8 5255 55 2076 | 442 3217 70 2077 | 408 4081 70 2078 | 358 955 30 2079 | 172 2144 95 2080 | 430 3968 90 2081 | 411 540 100 2082 | 64 2480 60 2083 | 60 1899 60 2084 | 31 6905 20 2085 | 408 4262 85 2086 | 473 1572 70 2087 | 500 2975 100 2088 | 357 3589 60 2089 | 477 6212 55 2090 | 157 1103 90 2091 | 559 2069 45 2092 | 517 4505 60 2093 | 282 3425 65 2094 | 63 2639 85 2095 | 177 7206 95 2096 | 71 6506 75 2097 | 561 540 95 2098 | 45 3720 100 2099 | 164 4902 75 2100 | 54 6208 70 2101 | 192 5255 80 2102 | 293 6521 65 2103 | 599 946 85 2104 | 138 2167 5 2105 | 105 4777 60 2106 | 583 2828 95 2107 | 83 3897 70 2108 | 287 5111 60 2109 | 217 3434 30 2110 | 584 4785 90 2111 | 484 1398 30 2112 | 541 6504 65 2113 | 553 3579 80 2114 | 533 3811 45 2115 | 539 6433 75 2116 | 216 3292 65 2117 | 403 4515 100 2118 | 358 6887 60 2119 | 226 2143 75 2120 | 372 6697 60 2121 | 245 5771 75 2122 | 38 2044 30 2123 | 498 3901 90 2124 | 337 7361 60 2125 | 420 1397 70 2126 | 568 4644 85 2127 | 150 543 65 2128 | 325 2046 80 2129 | 34 704 60 2130 | 314 2832 75 2131 | 524 7515 90 2132 | 424 6201 90 2133 | 538 6357 85 2134 | 181 4171 70 2135 | 560 7517 70 2136 | 456 3411 95 2137 | 52 6198 50 2138 | 369 3063 100 2139 | 428 5385 60 2140 | 163 7365 80 2141 | 273 2269 70 2142 | 556 2834 90 2143 | 354 1230 50 2144 | 224 6700 60 2145 | 528 4376 80 2146 | 557 2470 50 2147 | 170 5774 75 2148 | 371 5254 50 2149 | 536 5240 100 2150 | 270 4902 70 2151 | 307 1903 90 2152 | 63 7220 60 2153 | 145 2273 65 2154 | 228 7537 65 2155 | 382 3399 75 2156 | 262 2467 100 2157 | 549 5477 90 2158 | 191 2143 70 2159 | 329 5113 80 2160 | 494 2146 85 2161 | 401 4659 80 2162 | 542 6700 5 2163 | 236 3605 45 2164 | 308 400 90 2165 | 351 7205 70 2166 | 319 710 65 2167 | 233 5950 80 2168 | 266 4397 65 2169 | 210 3194 70 2170 | 373 4383 60 2171 | 435 1882 85 2172 | 23 6201 90 2173 | 139 3577 5 2174 | 310 546 60 2175 | 114 2497 70 2176 | 51 6394 45 2177 | 503 1404 85 2178 | 3 2269 60 2179 | 265 11 65 2180 | 484 6201 60 2181 | 551 6712 70 2182 | 205 4395 70 2183 | 316 6693 50 2184 | 85 2059 15 2185 | 218 4641 75 2186 | 129 2834 10 2187 | 540 2832 90 2188 | 402 5113 75 2189 | 387 4242 40 2190 | 596 3901 80 2191 | 349 4777 65 2192 | 574 393 70 2193 | 427 4380 85 2194 | 189 6904 75 2195 | 135 3199 65 2196 | 158 4237 60 2197 | 111 3723 80 2198 | 217 4515 100 2199 | 77 3412 90 2200 | 416 5139 70 2201 | 396 2259 65 2202 | 470 4298 70 2203 | 200 1108 65 2204 | 422 7070 85 2205 | 213 2459 75 2206 | 565 3598 70 2207 | 309 2643 90 2208 | 127 4111 75 2209 | 165 4643 75 2210 | 48 5517 65 2211 | 418 4506 70 2212 | 176 7365 85 2213 | 564 4505 90 2214 | 381 5488 70 2215 | 515 4078 100 2216 | 77 3898 80 2217 | 58 1750 90 2218 | 97 5384 75 2219 | 366 2157 75 2220 | 332 5764 55 2221 | 95 1090 90 2222 | 68 6069 75 2223 | 344 2656 70 2224 | 494 5114 70 2225 | 437 6562 70 2226 | 575 217 80 2227 | 81 1756 70 2228 | 414 5367 90 2229 | 545 5366 0 2230 | 511 3404 65 2231 | 77 244 75 2232 | 262 538 100 2233 | 185 11 70 2234 | 56 2146 90 2235 | 391 5128 90 2236 | 335 707 65 2237 | 180 4646 60 2238 | 250 4306 80 2239 | 138 2654 40 2240 | 138 1916 95 2241 | 85 4386 40 2242 | 223 6698 60 2243 | 269 1101 35 2244 | 410 2145 70 2245 | 40 7204 100 2246 | 153 6348 40 2247 | 581 4243 80 2248 | 565 1900 80 2249 | 75 26 60 2250 | 483 954 75 2251 | 94 2694 75 2252 | 280 2275 50 2253 | 302 87 50 2254 | 473 7216 70 2255 | 130 695 100 2256 | 48 432 65 2257 | 346 3061 90 2258 | 574 4501 70 2259 | 393 1585 80 2260 | 435 2155 55 2261 | 428 6902 75 2262 | 538 4380 80 2263 | 176 1095 30 2264 | 544 15 65 2265 | 401 3836 70 2266 | 576 244 65 2267 | 49 6901 100 2268 | 372 6921 75 2269 | 79 4236 60 2270 | 45 6201 70 2271 | 157 1100 70 2272 | 572 6367 90 2273 | 317 2153 90 2274 | 566 7071 80 2275 | 517 6219 85 2276 | 235 6506 100 2277 | 166 538 80 2278 | 258 3723 75 2279 | 548 5113 90 2280 | 421 5252 55 2281 | 322 6716 75 2282 | 447 686 40 2283 | 27 3703 50 2284 | 552 6727 60 2285 | 289 1090 40 2286 | 170 1765 85 2287 | 431 5940 80 2288 | 205 5367 85 2289 | 275 526 60 2290 | 194 1091 70 2291 | 197 3581 40 2292 | 140 3491 65 2293 | 446 1901 20 2294 | 573 4237 80 2295 | 494 4644 85 2296 | 72 6509 80 2297 | 516 6367 85 2298 | 377 6502 60 2299 | 67 5111 75 2300 | 275 949 55 2301 | 99 1901 90 2302 | 484 3058 100 2303 | 171 4782 65 2304 | 183 5250 60 2305 | 117 5941 60 2306 | 369 760 90 2307 | 299 2274 70 2308 | 66 2048 40 2309 | 230 7386 80 2310 | 225 3206 65 2311 | 44 2144 70 2312 | 600 4081 70 2313 | 255 7364 65 2314 | 134 6208 35 2315 | 475 2076 70 2316 | 36 2964 20 2317 | 41 1887 35 2318 | 170 4505 75 2319 | 271 3440 60 2320 | 579 4235 80 2321 | 196 6709 55 2322 | 486 4785 90 2323 | 0 1 95 2324 | 317 5244 85 2325 | 371 237 30 2326 | 104 3897 75 2327 | 35 3705 100 2328 | 286 5778 80 2329 | 386 4515 100 2330 | 562 5114 80 2331 | 103 4243 80 2332 | 444 5939 75 2333 | 167 3716 90 2334 | 47 6357 80 2335 | 582 2867 40 2336 | 165 1571 40 2337 | 337 232 75 2338 | 51 6893 30 2339 | 596 4515 85 2340 | 441 4078 100 2341 | 270 1570 70 2342 | 113 4080 90 2343 | 470 5049 50 2344 | 462 3705 80 2345 | 289 4801 70 2346 | 497 7579 70 2347 | 358 4235 50 2348 | 173 4121 85 2349 | 437 3581 85 2350 | 11 6722 40 2351 | 520 1756 55 2352 | 533 4369 75 2353 | 449 1264 60 2354 | 570 448 70 2355 | 203 544 100 2356 | 330 3202 70 2357 | 399 6196 65 2358 | 24 3745 60 2359 | 1 4907 60 2360 | 451 2209 25 2361 | 62 6212 90 2362 | 540 3716 80 2363 | 285 430 90 2364 | 345 734 40 2365 | 365 6709 25 2366 | 378 4243 70 2367 | 479 3204 95 2368 | 268 2986 45 2369 | 76 4517 55 2370 | 356 6506 60 2371 | 44 226 60 2372 | 527 5771 70 2373 | 92 3069 70 2374 | 336 7515 70 2375 | 592 7515 85 2376 | 215 2274 100 2377 | 344 402 95 2378 | 209 3714 45 2379 | 376 1404 85 2380 | 299 2984 65 2381 | 244 695 30 2382 | 450 4918 80 2383 | 528 1571 0 2384 | 6 6711 35 2385 | 33 2650 50 2386 | 212 3241 75 2387 | 339 6919 65 2388 | 515 7216 70 2389 | 531 6069 70 2390 | 170 6353 85 2391 | 197 1765 45 2392 | 5 3887 10 2393 | 554 5281 80 2394 | 578 1089 85 2395 | 299 7086 10 2396 | 554 4392 75 2397 | 534 5938 80 2398 | 265 7074 75 2399 | 594 7074 75 2400 | 276 6731 80 2401 | 264 6364 90 2402 | 142 5369 55 2403 | 281 2973 30 2404 | 174 2831 80 2405 | 227 6509 100 2406 | 478 24 65 2407 | 192 3909 35 2408 | 519 3703 80 2409 | 452 3579 80 2410 | 416 1737 70 2411 | 219 3056 100 2412 | 266 4387 80 2413 | 195 237 100 2414 | 174 2475 80 2415 | 53 4547 70 2416 | 288 7205 75 2417 | 11 3732 20 2418 | 147 3897 95 2419 | 118 2970 80 2420 | 545 946 80 2421 | 5 7512 80 2422 | 246 256 80 2423 | 493 1737 65 2424 | 432 3061 80 2425 | 51 5402 75 2426 | 353 2664 90 2427 | 110 6740 90 2428 | 287 1756 80 2429 | 346 5394 90 2430 | 477 7372 80 2431 | 323 4779 50 2432 | 361 6208 60 2433 | 591 7517 55 2434 | 265 5250 55 2435 | 557 2048 80 2436 | 6 4376 100 2437 | 429 4389 35 2438 | 8 3703 65 2439 | 562 7364 80 2440 | 601 7364 75 2441 | 75 6203 55 2442 | 271 4395 60 2443 | 261 18 90 2444 | 282 2050 70 2445 | 273 1092 65 2446 | 293 3066 85 2447 | 5 1572 65 2448 | 249 4536 80 2449 | 444 3742 65 2450 | 164 232 65 2451 | 92 3413 75 2452 | 142 1104 100 2453 | 379 3895 80 2454 | 212 417 75 2455 | 421 1597 75 2456 | 167 3429 70 2457 | 133 2842 50 2458 | 342 951 95 2459 | 478 3598 85 2460 | 190 7364 65 2461 | 335 6506 80 2462 | 226 7444 5 2463 | 201 4236 70 2464 | 315 6064 40 2465 | 9 2461 75 2466 | 10 1385 95 2467 | 73 1892 0 2468 | 491 2153 75 2469 | 47 6222 60 2470 | 19 7364 75 2471 | 362 7205 80 2472 | 211 401 100 2473 | 46 3415 85 2474 | 322 1767 90 2475 | 543 3583 80 2476 | 112 3430 75 2477 | 510 4080 85 2478 | 56 5941 20 2479 | 75 4902 40 2480 | 440 5366 100 2481 | 32 7091 75 2482 | 323 6079 70 2483 | 192 2262 35 2484 | 188 5485 100 2485 | 38 3581 80 2486 | 520 4919 70 2487 | 315 526 65 2488 | 19 6729 55 2489 | 165 1101 75 2490 | 127 5939 85 2491 | 464 7364 90 2492 | 72 2869 60 2493 | 128 7091 85 2494 | 134 2824 100 2495 | 177 4787 95 2496 | 35 5244 45 2497 | 98 4263 100 2498 | 119 3705 70 2499 | 560 3705 60 2500 | 49 2999 80 2501 | 327 6335 90 2502 | 217 6699 85 2503 | 221 5239 70 2504 | 7 7515 5 2505 | 384 5648 75 2506 | 460 3934 75 2507 | 57 6071 60 2508 | 433 6507 65 2509 | 491 4263 85 2510 | 263 5778 85 2511 | 446 6191 60 2512 | 86 5938 85 2513 | 224 5394 80 2514 | 54 3605 75 2515 | 41 0 100 2516 | 396 1585 65 2517 | 353 4630 65 2518 | 333 2834 80 2519 | 119 1158 75 2520 | 330 705 55 2521 | 582 949 60 2522 | 33 2144 75 2523 | 442 3720 20 2524 | 468 5372 75 2525 | 108 4085 90 2526 | 551 542 55 2527 | 214 7072 30 2528 | 178 7083 90 2529 | 431 393 55 2530 | 345 2969 70 2531 | 534 2984 70 2532 | 142 1752 90 2533 | 172 2972 100 2534 | 352 2688 45 2535 | 10 5486 70 2536 | 13 4914 85 2537 | 368 2043 5 2538 | 125 232 85 2539 | 53 529 85 2540 | 172 7072 20 2541 | 472 2090 65 2542 | 290 2144 60 2543 | 28 4093 30 2544 | 317 1039 60 2545 | 188 4792 75 2546 | 352 11 70 2547 | 158 2048 65 2548 | 370 1388 60 2549 | 327 404 90 2550 | 269 3898 35 2551 | 220 7074 70 2552 | 448 3035 0 2553 | 284 4080 55 2554 | 297 4545 90 2555 | 543 3189 50 2556 | 570 6764 30 2557 | 301 4537 80 2558 | 204 4639 95 2559 | 208 3057 0 2560 | 503 3411 90 2561 | 110 7218 85 2562 | 393 7074 55 2563 | 592 1118 70 2564 | 532 2656 65 2565 | 574 7204 85 2566 | 410 4836 70 2567 | 310 3412 100 2568 | 23 4933 95 2569 | 285 6241 65 2570 | 512 2274 80 2571 | 222 2866 85 2572 | 420 3411 70 2573 | 292 4912 60 2574 | 422 1752 100 2575 | 514 3061 80 2576 | 229 5375 75 2577 | 474 7552 80 2578 | 560 2675 60 2579 | 415 350 50 2580 | 117 543 25 2581 | 330 707 60 2582 | 467 1239 75 2583 | 350 3056 100 2584 | 319 5490 60 2585 | 488 3420 70 2586 | 382 5128 90 2587 | 439 1574 100 2588 | 393 1566 100 2589 | 137 4930 85 2590 | 487 6699 40 2591 | 535 3961 90 2592 | 342 4933 65 2593 | 1 1747 30 2594 | 367 2070 85 2595 | 65 5645 45 2596 | 238 1589 45 2597 | 50 3221 80 2598 | 529 2984 80 2599 | 342 2043 55 2600 | 112 5495 70 2601 | 398 2964 70 2602 | 404 2475 50 2603 | 586 2832 75 2604 | 433 6836 85 2605 | 108 2487 75 2606 | 411 1404 80 2607 | 375 7364 45 2608 | 111 6895 80 2609 | 346 2647 60 2610 | 364 236 90 2611 | 83 1225 90 2612 | 266 736 45 2613 | 359 244 90 2614 | 20 2656 70 2615 | 458 3602 40 2616 | 278 6352 30 2617 | 207 1558 80 2618 | 360 6502 35 2619 | 279 2653 80 2620 | 191 2467 85 2621 | 355 5474 95 2622 | 593 4503 85 2623 | 239 7553 30 2624 | 516 6894 70 2625 | 433 4751 75 2626 | 589 6698 70 2627 | 269 946 55 2628 | 133 2275 60 2629 | 472 363 70 2630 | 248 3420 90 2631 | 55 2669 70 2632 | 485 2834 60 2633 | 525 5774 55 2634 | 575 1396 80 2635 | 243 4644 40 2636 | 421 532 60 2637 | 298 6693 70 2638 | 134 5484 70 2639 | 12 947 85 2640 | 429 2044 85 2641 | 547 7060 80 2642 | 378 6201 95 2643 | 28 4107 35 2644 | 169 5949 25 2645 | 174 404 75 2646 | 271 543 50 2647 | 495 0 35 2648 | 261 2274 100 2649 | 436 5938 70 2650 | 448 2058 70 2651 | 285 5126 85 2652 | 98 6888 75 2653 | 416 6727 35 2654 | 32 3190 20 2655 | 319 6225 80 2656 | 151 3418 65 2657 | 430 5662 70 2658 | 216 5632 80 2659 | 35 4235 100 2660 | 341 696 75 2661 | 563 2969 85 2662 | 407 574 40 2663 | 508 6697 80 2664 | 336 5647 60 2665 | 391 2834 100 2666 | 221 1241 65 2667 | 220 4521 70 2668 | 199 5950 60 2669 | 561 2044 100 2670 | 600 2834 60 2671 | 101 3579 100 2672 | 214 5643 50 2673 | 398 6070 95 2674 | 587 236 35 2675 | 31 6503 60 2676 | 225 7512 70 2677 | 252 3737 80 2678 | 247 6353 100 2679 | 358 2153 80 2680 | 316 399 70 2681 | 218 4383 65 2682 | 490 3061 80 2683 | 169 2498 85 2684 | 575 1736 85 2685 | 260 2476 60 2686 | 173 1100 80 2687 | 506 4512 75 2688 | 512 6710 0 2689 | 483 6201 35 2690 | 38 4786 85 2691 | 427 4081 95 2692 | 63 4902 65 2693 | 148 6352 90 2694 | 25 6062 100 2695 | 577 2834 80 2696 | 90 2315 75 2697 | 510 6198 85 2698 | 296 5477 50 2699 | 402 6693 65 2700 | 476 6239 80 2701 | 5 4785 80 2702 | 162 2827 80 2703 | 24 5245 55 2704 | 107 4386 95 2705 | 583 5114 75 2706 | 475 6201 80 2707 | 571 3071 85 2708 | 547 6887 35 2709 | 443 1585 70 2710 | 256 3000 70 2711 | 64 961 70 2712 | 447 2971 70 2713 | 171 3577 55 2714 | 442 3 70 2715 | 599 4237 90 2716 | 492 2824 80 2717 | 366 1567 75 2718 | 300 5114 90 2719 | 580 7364 60 2720 | 353 4503 80 2721 | 291 2048 55 2722 | 507 5808 90 2723 | 581 697 25 2724 | 301 2154 70 2725 | 386 698 40 2726 | 541 5240 70 2727 | 208 6353 100 2728 | 270 1756 70 2729 | 83 2044 90 2730 | 320 2167 55 2731 | 100 4240 70 2732 | 151 4391 85 2733 | 171 6697 70 2734 | 109 6711 100 2735 | 470 5029 35 2736 | 440 2669 100 2737 | 505 7062 75 2738 | 435 3595 50 2739 | 570 6077 75 2740 | 202 947 100 2741 | 46 4916 80 2742 | 154 3063 5 2743 | 514 232 65 2744 | 306 4078 80 2745 | 168 4515 85 2746 | 196 3199 75 2747 | 238 6064 0 2748 | 278 5632 100 2749 | 112 4540 80 2750 | 79 3901 30 2751 | 0 4080 90 2752 | 241 1736 75 2753 | 473 3735 25 2754 | 563 4917 85 2755 | 125 1089 95 2756 | 548 526 80 2757 | 114 2262 55 2758 | 385 947 75 2759 | 517 1736 100 2760 | 479 2686 85 2761 | 370 3216 65 2762 | 544 5664 50 2763 | 295 4514 35 2764 | 346 7455 75 2765 | 88 1736 100 2766 | 445 3897 40 2767 | 542 4913 0 2768 | 540 1750 80 2769 | 275 952 20 2770 | 522 2694 80 2771 | 586 2490 70 2772 | 241 544 80 2773 | 162 4785 80 2774 | 586 707 75 2775 | 493 2977 45 2776 | 570 7291 95 2777 | 281 2195 15 2778 | 486 6348 10 2779 | 89 2984 70 2780 | 409 2960 65 2781 | 198 969 80 2782 | 150 526 80 2783 | 449 5643 80 2784 | 374 3411 95 2785 | 187 2474 65 2786 | 248 5632 80 2787 | 419 2347 0 2788 | 184 2643 55 2789 | 423 4786 65 2790 | 57 4240 90 2791 | 347 5768 70 2792 | 58 4381 70 2793 | 320 3900 85 2794 | 362 6923 60 2795 | 237 947 100 2796 | 37 2687 75 2797 | 437 5269 70 2798 | 373 543 80 2799 | 55 946 65 2800 | 33 6062 85 2801 | 148 555 75 2802 | 267 3583 85 2803 | 429 5953 65 2804 | 102 5112 80 2805 | 578 947 75 2806 | 187 3196 70 2807 | 593 2043 95 2808 | 100 4081 70 2809 | 59 1399 70 2810 | 168 1231 65 2811 | 201 1570 80 2812 | 585 3063 95 2813 | 320 2143 55 2814 | 61 4511 70 2815 | 164 4916 55 2816 | 25 4081 100 2817 | 19 2275 50 2818 | 441 5762 85 2819 | 343 4641 80 2820 | 93 4902 45 2821 | 223 5806 20 2822 | 240 946 55 2823 | 142 2144 90 2824 | 338 7404 10 2825 | 91 960 70 2826 | 236 225 30 2827 | 415 3523 50 2828 | 262 4779 85 2829 | 464 217 80 2830 | 78 7253 100 2831 | 160 2043 65 2832 | 37 3586 80 2833 | 249 1384 55 2834 | 372 6498 35 2835 | 125 6064 70 2836 | 31 6894 60 2837 | 551 21 55 2838 | 502 5939 100 2839 | 15 2967 20 2840 | 174 1571 40 2841 | 288 3602 90 2842 | 114 9 100 2843 | 124 766 65 2844 | 428 1764 75 2845 | 519 4080 85 2846 | 531 4520 40 2847 | 546 5957 80 2848 | 362 6015 20 2849 | 394 5 45 2850 | 298 2828 90 2851 | 210 6069 70 2852 | 432 1736 100 2853 | 423 4237 100 2854 | 306 3703 75 2855 | 137 5496 80 2856 | 254 3057 80 2857 | 232 6430 85 2858 | 463 2643 70 2859 | 502 6062 70 2860 | 295 2466 85 2861 | 20 6506 60 2862 | 81 990 100 2863 | 233 5378 55 2864 | 124 1753 100 2865 | 94 6203 40 2866 | 385 2475 75 2867 | 372 6892 15 2868 | 206 5369 75 2869 | 41 7515 100 2870 | 100 2045 80 2871 | 361 2467 70 2872 | 246 6223 65 2873 | 152 2055 75 2874 | 403 5632 100 2875 | 343 2834 100 2876 | 14 4393 85 2877 | 98 1404 95 2878 | 86 4383 80 2879 | 594 1901 90 2880 | 8 1401 40 2881 | 588 5394 60 2882 | 242 7277 70 2883 | 495 1589 35 2884 | 494 985 85 2885 | 521 7517 80 2886 | 48 1427 85 2887 | 326 4501 70 2888 | 87 4639 50 2889 | 433 704 70 2890 | 120 949 70 2891 | 234 1244 70 2892 | 122 2971 20 2893 | 251 1242 50 2894 | 14 7206 75 2895 | 525 2987 75 2896 | 97 22 75 2897 | 571 7204 85 2898 | 294 4424 80 2899 | 395 2145 30 2900 | 229 1882 80 2901 | 204 4646 95 2902 | 506 7364 80 2903 | 426 6351 45 2904 | 16 5259 70 2905 | 400 6367 95 2906 | 341 6693 40 2907 | 414 1289 65 2908 | 467 3207 30 2909 | 476 5141 65 2910 | 88 6363 80 2911 | 43 1558 75 2912 | 359 2677 70 2913 | 226 4812 0 2914 | 227 3215 75 2915 | 460 1388 75 2916 | 139 2043 15 2917 | 309 4797 90 2918 | 51 7072 40 2919 | 263 3415 85 2920 | 149 3921 0 2921 | 197 5776 60 2922 | 239 4643 75 2923 | 303 24 70 2924 | 265 7061 80 2925 | 310 3577 85 2926 | 432 5242 90 2927 | 169 2471 30 2928 | 363 4526 80 2929 | 513 5519 70 2930 | 471 2467 85 2931 | 389 1402 50 2932 | 455 2272 70 2933 | 159 2463 70 2934 | 226 5117 75 2935 | 50 4392 75 2936 | 145 2070 60 2937 | 454 2654 55 2938 | 584 3590 75 2939 | 504 2212 45 2940 | 87 3889 60 2941 | 489 2275 70 2942 | 568 5126 80 2943 | 462 6204 65 2944 | 512 4392 45 2945 | 163 2475 90 2946 | 166 5250 80 2947 | 450 6508 80 2948 | 49 5633 65 2949 | 479 1566 75 2950 | 579 5375 85 2951 | 84 6887 70 2952 | 585 3062 65 2953 | 78 6711 100 2954 | 411 21 20 2955 | 530 1100 100 2956 | 312 3418 60 2957 | 563 7204 85 2958 | 94 7543 70 2959 | 80 1585 70 2960 | 585 5112 100 2961 | 179 2846 70 2962 | 420 1756 70 2963 | 332 6905 50 2964 | 492 5375 50 2965 | 95 695 85 2966 | 104 6547 45 2967 | 104 1954 65 2968 | 437 4477 75 2969 | 62 3400 40 2970 | 229 2157 65 2971 | 496 5394 70 2972 | 528 6352 75 2973 | 334 5114 65 2974 | 40 1882 100 2975 | 303 707 90 2976 | 232 2826 70 2977 | 480 5643 80 2978 | 115 2145 100 2979 | 70 2828 85 2980 | 476 4393 60 2981 | 96 1766 80 2982 | 367 3588 80 2983 | 162 5764 20 2984 | 434 2828 75 2985 | 270 3217 80 2986 | 370 2468 100 2987 | 217 967 50 2988 | 51 3419 55 2989 | 389 1750 45 2990 | 268 7273 75 2991 | 192 22 100 2992 | 488 707 65 2993 | 214 687 75 2994 | 232 6800 100 2995 | 266 4179 50 2996 | 50 1899 75 2997 | 554 7534 25 2998 | 323 6203 65 2999 | 305 2470 60 3000 | 477 4512 55 3001 | 109 6887 100 3002 | 169 2496 30 3003 | 511 6064 25 3004 | 37 6080 75 3005 | 393 6353 75 3006 | 548 1238 60 3007 | 186 2461 65 3008 | 272 7365 65 3009 | 167 2259 80 3010 | 74 10 75 3011 | -------------------------------------------------------------------------------- /data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LianHaiMiao/Attentive-Group-Recommendation/fed20414dc35c99496eb09d53ca44be83c596957/data/__init__.py -------------------------------------------------------------------------------- /dataset.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Created on Aug 8, 2016 3 | Processing datasets. 4 | 5 | @author: Xiangnan He (xiangnanhe@gmail.com) 6 | 7 | Modified on Nov 10, 2017, by Lianhai Miao 8 | ''' 9 | 10 | import scipy.sparse as sp 11 | import numpy as np 12 | import torch 13 | from torch.utils.data import TensorDataset, DataLoader 14 | 15 | class GDataset(object): 16 | 17 | def __init__(self, user_path, group_path, num_negatives): 18 | ''' 19 | Constructor 20 | ''' 21 | self.num_negatives = num_negatives 22 | # user data 23 | self.user_trainMatrix = self.load_rating_file_as_matrix(user_path + "Train.txt") 24 | self.user_testRatings = self.load_rating_file_as_list(user_path + "Test.txt") 25 | self.user_testNegatives = self.load_negative_file(user_path + "Negative.txt") 26 | self.num_users, self.num_items = self.user_trainMatrix.shape 27 | # group data 28 | self.group_trainMatrix = self.load_rating_file_as_matrix(group_path + "Train.txt") 29 | self.group_testRatings = self.load_rating_file_as_list(group_path + "Test.txt") 30 | self.group_testNegatives = self.load_negative_file(group_path + "Negative.txt") 31 | 32 | 33 | def load_rating_file_as_list(self, filename): 34 | ratingList = [] 35 | with open(filename, "r") as f: 36 | line = f.readline() 37 | while line != None and line != "": 38 | arr = line.split(" ") 39 | user, item = int(arr[0]), int(arr[1]) 40 | ratingList.append([user, item]) 41 | line = f.readline() 42 | return ratingList 43 | 44 | def load_negative_file(self, filename): 45 | negativeList = [] 46 | with open(filename, "r") as f: 47 | line = f.readline() 48 | while line != None and line != "": 49 | arr = line.split(" ") 50 | negatives = [] 51 | for x in arr[1:]: 52 | negatives.append(int(x)) 53 | negativeList.append(negatives) 54 | line = f.readline() 55 | return negativeList 56 | 57 | def load_rating_file_as_matrix(self, filename): 58 | # Get number of users and items 59 | num_users, num_items = 0, 0 60 | with open(filename, "r") as f: 61 | line = f.readline() 62 | while line != None and line != "": 63 | arr = line.split(" ") 64 | u, i = int(arr[0]), int(arr[1]) 65 | num_users = max(num_users, u) 66 | num_items = max(num_items, i) 67 | line = f.readline() 68 | # Construct matrix 69 | mat = sp.dok_matrix((num_users + 1, num_items + 1), dtype=np.float32) 70 | with open(filename, "r") as f: 71 | line = f.readline() 72 | while line != None and line != "": 73 | arr = line.split(" ") 74 | if len(arr) > 2: 75 | user, item, rating = int(arr[0]), int(arr[1]), int(arr[2]) 76 | if (rating > 0): 77 | mat[user, item] = 1.0 78 | else: 79 | user, item = int(arr[0]), int(arr[1]) 80 | mat[user, item] = 1.0 81 | line = f.readline() 82 | return mat 83 | 84 | def get_train_instances(self, train): 85 | user_input, pos_item_input, neg_item_input = [], [], [] 86 | num_users = train.shape[0] 87 | num_items = train.shape[1] 88 | for (u, i) in train.keys(): 89 | # positive instance 90 | for _ in range(self.num_negatives): 91 | pos_item_input.append(i) 92 | # negative instances 93 | for _ in range(self.num_negatives): 94 | j = np.random.randint(num_items) 95 | while (u, j) in train: 96 | j = np.random.randint(num_items) 97 | user_input.append(u) 98 | neg_item_input.append(j) 99 | pi_ni = [[pi, ni] for pi, ni in zip(pos_item_input, neg_item_input)] 100 | return user_input, pi_ni 101 | 102 | def get_user_dataloader(self, batch_size): 103 | user, positem_negitem_at_u = self.get_train_instances(self.user_trainMatrix) 104 | train_data = TensorDataset(torch.LongTensor(user), torch.LongTensor(positem_negitem_at_u)) 105 | user_train_loader = DataLoader(train_data, batch_size=batch_size, shuffle=True) 106 | return user_train_loader 107 | 108 | def get_group_dataloader(self, batch_size): 109 | group, positem_negitem_at_g = self.get_train_instances(self.group_trainMatrix) 110 | train_data = TensorDataset(torch.LongTensor(group), torch.LongTensor(positem_negitem_at_g)) 111 | group_train_loader = DataLoader(train_data, batch_size=batch_size, shuffle=True) 112 | return group_train_loader 113 | 114 | 115 | 116 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Created on Nov 10, 2017 3 | Main function 4 | 5 | @author: Lianhai Miao 6 | ''' 7 | 8 | from model.agree import AGREE 9 | import torch 10 | import torch.nn as nn 11 | import torch.autograd as autograd 12 | import torch.optim as optim 13 | import numpy as np 14 | from time import time 15 | from config import Config 16 | from utils.util import Helper 17 | from dataset import GDataset 18 | 19 | from tqdm import tqdm 20 | 21 | # train the model 22 | def training(model, train_loader, epoch_id, config, type_m): 23 | # user trainning 24 | learning_rates = config.lr 25 | # learning rate decay 26 | lr = learning_rates[0] 27 | if epoch_id >= 15 and epoch_id < 25: 28 | lr = learning_rates[1] 29 | elif epoch_id >=20: 30 | lr = learning_rates[2] 31 | # lr decay 32 | if epoch_id % 5 == 0: 33 | lr /= 2 34 | 35 | # optimizer 36 | optimizer = optim.RMSprop(model.parameters(), lr) 37 | 38 | losses = [] 39 | print('%s train_loader length: %d' % (type_m, len(train_loader))) 40 | for batch_id, (u, pi_ni) in tqdm(enumerate(train_loader)): 41 | # Data Load 42 | user_input = u 43 | pos_item_input = pi_ni[:, 0] 44 | neg_item_input = pi_ni[:, 1] 45 | # Forward 46 | if type_m == 'user': 47 | pos_prediction = model(None, user_input, pos_item_input) 48 | neg_prediction = model(None, user_input, neg_item_input) 49 | elif type_m == 'group': 50 | pos_prediction = model(user_input, None, pos_item_input) 51 | neg_prediction = model(user_input, None, neg_item_input) 52 | # Zero_grad 53 | model.zero_grad() 54 | # Loss 55 | loss = torch.mean((pos_prediction - neg_prediction -1) **2) 56 | # record loss history 57 | losses.append(loss) 58 | # Backward 59 | loss.backward() 60 | optimizer.step() 61 | 62 | print('Iteration %d, loss is [%.4f ]' % (epoch_id, torch.mean(torch.stack(losses)))) 63 | 64 | 65 | def evaluation(model, helper, testRatings, testNegatives, K, type_m): 66 | model.eval() 67 | (hits, ndcgs) = helper.evaluate_model(model, testRatings, testNegatives, K, type_m) 68 | hr, ndcg = np.array(hits).mean(), np.array(ndcgs).mean() 69 | return hr, ndcg 70 | 71 | 72 | if __name__ == '__main__': 73 | # initial parameter class 74 | config = Config() 75 | 76 | # initial helper 77 | helper = Helper() 78 | 79 | # get the dict of users in group 80 | g_m_d = helper.gen_group_member_dict(config.user_in_group_path) 81 | 82 | # initial dataSet class 83 | dataset = GDataset(config.user_dataset, config.group_dataset, config.num_negatives) 84 | 85 | # get group number 86 | num_group = len(g_m_d) 87 | num_users, num_items = dataset.num_users, dataset.num_items 88 | 89 | # build AGREE model 90 | agree = AGREE(num_users, num_items, num_group, config.embedding_size, g_m_d, config.drop_ratio) 91 | 92 | # config information 93 | print("AGREE at embedding size %d, run Iteration:%d, NDCG and HR at %d" %(config.embedding_size, config.epoch, config.topK)) 94 | # train the model 95 | for epoch in range(config.epoch): 96 | agree.train() 97 | # 开始训练时间 98 | t1 = time() 99 | training(agree, dataset.get_user_dataloader(config.batch_size), epoch, config, 'user') 100 | 101 | training(agree, dataset.get_group_dataloader(config.batch_size), epoch, config, 'group') 102 | print("user and group training time is: [%.1f s]" % (time()-t1)) 103 | # evaluation 104 | t2 = time() 105 | u_hr, u_ndcg = evaluation(agree, helper, dataset.user_testRatings, dataset.user_testNegatives, config.topK, 'user') 106 | print('User Iteration %d [%.1f s]: HR = %.4f, NDCG = %.4f, [%.1f s]' % ( 107 | epoch, time() - t1, u_hr, u_ndcg, time() - t2)) 108 | 109 | hr, ndcg = evaluation(agree, helper, dataset.group_testRatings, dataset.group_testNegatives, config.topK, 'group') 110 | print( 111 | 'Group Iteration %d [%.1f s]: HR = %.4f, ' 112 | 'NDCG = %.4f, [%.1f s]' % (epoch, time() - t1, hr, ndcg, time() - t2)) 113 | 114 | 115 | print("Done!") 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /model/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LianHaiMiao/Attentive-Group-Recommendation/fed20414dc35c99496eb09d53ca44be83c596957/model/__init__.py -------------------------------------------------------------------------------- /model/agree.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Created on Nov 10, 2017 3 | Create Model 4 | 5 | @author: Lianhai Miao 6 | ''' 7 | 8 | import torch 9 | import torch.nn as nn 10 | 11 | class AGREE(nn.Module): 12 | def __init__(self, num_users, num_items, num_groups, embedding_dim, group_member_dict, drop_ratio): 13 | super(AGREE, self).__init__() 14 | self.userembeds = UserEmbeddingLayer(num_users, embedding_dim) 15 | self.itemembeds = ItemEmbeddingLayer(num_items, embedding_dim) 16 | self.groupembeds = GroupEmbeddingLayer(num_groups, embedding_dim) 17 | self.attention = AttentionLayer(2 * embedding_dim, drop_ratio) 18 | self.predictlayer = PredictLayer(3 * embedding_dim, drop_ratio) 19 | self.group_member_dict = group_member_dict 20 | self.num_users = num_users 21 | self.num_groups = len(self.group_member_dict) 22 | # initial model 23 | for m in self.modules(): 24 | if isinstance(m, nn.Linear): 25 | nn.init.normal_(m.weight) 26 | if isinstance(m, nn.Embedding): 27 | nn.init.xavier_normal_(m.weight) 28 | 29 | def forward(self, group_inputs, user_inputs, item_inputs): 30 | # train group 31 | if (group_inputs is not None) and (user_inputs is None): 32 | out = self.grp_forward(group_inputs, item_inputs) 33 | # train user 34 | else: 35 | out = self.usr_forward(user_inputs, item_inputs) 36 | return out 37 | 38 | # group forward 39 | def grp_forward(self, group_inputs, item_inputs): 40 | group_embeds = torch.Tensor() 41 | item_embeds_full = self.itemembeds(torch.LongTensor(item_inputs)) 42 | for i, j in zip(group_inputs, item_inputs): 43 | members = self.group_member_dict[i.item()] 44 | members_embeds = self.userembeds(torch.LongTensor(members)) 45 | items_numb = [] 46 | for _ in members: 47 | items_numb.append(j) 48 | item_embeds = self.itemembeds(torch.LongTensor(items_numb)) 49 | group_item_embeds = torch.cat((members_embeds, item_embeds), dim=1) 50 | at_wt = self.attention(group_item_embeds) 51 | g_embeds_with_attention = torch.matmul(at_wt, members_embeds) 52 | group_embeds_pure = self.groupembeds(torch.LongTensor([i])) 53 | g_embeds = g_embeds_with_attention + group_embeds_pure 54 | group_embeds = torch.cat((group_embeds, g_embeds)) 55 | 56 | element_embeds = torch.mul(group_embeds, item_embeds_full) # Element-wise product 57 | new_embeds = torch.cat((element_embeds, group_embeds, item_embeds_full), dim=1) 58 | y = torch.sigmoid(self.predictlayer(new_embeds)) 59 | return y 60 | 61 | # user forward 62 | def usr_forward(self, user_inputs, item_inputs): 63 | user_embeds = self.userembeds(user_inputs) 64 | item_embeds = self.itemembeds(item_inputs) 65 | element_embeds = torch.mul(user_embeds, item_embeds) # Element-wise product 66 | new_embeds = torch.cat((element_embeds, user_embeds, item_embeds), dim=1) 67 | y = torch.sigmoid(self.predictlayer(new_embeds)) 68 | return y 69 | 70 | class UserEmbeddingLayer(nn.Module): 71 | def __init__(self, num_users, embedding_dim): 72 | super(UserEmbeddingLayer, self).__init__() 73 | self.userEmbedding = nn.Embedding(num_users, embedding_dim) 74 | 75 | def forward(self, user_inputs): 76 | user_embeds = self.userEmbedding(user_inputs) 77 | return user_embeds 78 | 79 | 80 | class ItemEmbeddingLayer(nn.Module): 81 | def __init__(self, num_items, embedding_dim): 82 | super(ItemEmbeddingLayer, self).__init__() 83 | self.itemEmbedding = nn.Embedding(num_items, embedding_dim) 84 | 85 | def forward(self, item_inputs): 86 | item_embeds = self.itemEmbedding(item_inputs) 87 | return item_embeds 88 | 89 | 90 | class GroupEmbeddingLayer(nn.Module): 91 | def __init__(self, number_group, embedding_dim): 92 | super(GroupEmbeddingLayer, self).__init__() 93 | self.groupEmbedding = nn.Embedding(number_group, embedding_dim) 94 | 95 | def forward(self, num_group): 96 | group_embeds = self.groupEmbedding(num_group) 97 | return group_embeds 98 | 99 | 100 | class AttentionLayer(nn.Module): 101 | def __init__(self, embedding_dim, drop_ratio=0): 102 | super(AttentionLayer, self).__init__() 103 | self.linear = nn.Sequential( 104 | nn.Linear(embedding_dim, 16), 105 | nn.ReLU(), 106 | nn.Dropout(drop_ratio), 107 | nn.Linear(16, 1), 108 | ) 109 | 110 | def forward(self, x): 111 | out = self.linear(x) 112 | weight = torch.softmax(out.view(1, -1), dim=1) 113 | return weight 114 | 115 | 116 | class PredictLayer(nn.Module): 117 | def __init__(self, embedding_dim, drop_ratio=0): 118 | super(PredictLayer, self).__init__() 119 | self.linear = nn.Sequential( 120 | nn.Linear(embedding_dim, 8), 121 | nn.ReLU(), 122 | nn.Dropout(drop_ratio), 123 | nn.Linear(8, 1) 124 | ) 125 | 126 | def forward(self, x): 127 | out = self.linear(x) 128 | return out 129 | 130 | -------------------------------------------------------------------------------- /utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LianHaiMiao/Attentive-Group-Recommendation/fed20414dc35c99496eb09d53ca44be83c596957/utils/__init__.py -------------------------------------------------------------------------------- /utils/util.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Created on Nov 10, 2017 3 | Deal something 4 | 5 | @author: Lianhai Miao 6 | ''' 7 | import torch 8 | from torch.autograd import Variable 9 | import numpy as np 10 | import math 11 | import heapq 12 | 13 | class Helper(object): 14 | """ 15 | utils class: it can provide any function that we need 16 | """ 17 | def __init__(self): 18 | self.timber = True 19 | 20 | def gen_group_member_dict(self, path): 21 | g_m_d = {} 22 | with open(path, 'r') as f: 23 | line = f.readline().strip() 24 | while line != None and line != "": 25 | a = line.split(' ') 26 | g = int(a[0]) 27 | g_m_d[g] = [] 28 | for m in a[1].split(','): 29 | g_m_d[g].append(int(m)) 30 | line = f.readline().strip() 31 | return g_m_d 32 | 33 | def evaluate_model(self, model, testRatings, testNegatives, K, type_m): 34 | """ 35 | Evaluate the performance (Hit_Ratio, NDCG) of top-K recommendation 36 | Return: score of each test rating. 37 | """ 38 | hits, ndcgs = [], [] 39 | 40 | for idx in range(len(testRatings)): 41 | (hr,ndcg) = self.eval_one_rating(model, testRatings, testNegatives, K, type_m, idx) 42 | hits.append(hr) 43 | ndcgs.append(ndcg) 44 | return (hits, ndcgs) 45 | 46 | 47 | def eval_one_rating(self, model, testRatings, testNegatives, K, type_m, idx): 48 | rating = testRatings[idx] 49 | items = testNegatives[idx] 50 | u = rating[0] 51 | gtItem = rating[1] 52 | items.append(gtItem) 53 | # Get prediction scores 54 | map_item_score = {} 55 | users = np.full(len(items), u) 56 | 57 | users_var = torch.from_numpy(users) 58 | users_var = users_var.long() 59 | items_var = torch.LongTensor(items) 60 | if type_m == 'group': 61 | predictions = model(users_var, None, items_var) 62 | elif type_m == 'user': 63 | predictions = model(None, users_var, items_var) 64 | for i in range(len(items)): 65 | item = items[i] 66 | map_item_score[item] = predictions.data.numpy()[i] 67 | items.pop() 68 | 69 | # Evaluate top rank list 70 | ranklist = heapq.nlargest(K, map_item_score, key=map_item_score.get) 71 | hr = self.getHitRatio(ranklist, gtItem) 72 | ndcg = self.getNDCG(ranklist, gtItem) 73 | return (hr, ndcg) 74 | 75 | def getHitRatio(self, ranklist, gtItem): 76 | for item in ranklist: 77 | if item == gtItem: 78 | return 1 79 | return 0 80 | 81 | def getNDCG(self, ranklist, gtItem): 82 | for i in range(len(ranklist)): 83 | item = ranklist[i] 84 | if item == gtItem: 85 | return math.log(2) / math.log(i+2) 86 | return 0 --------------------------------------------------------------------------------