Objective:

In the project, we are doing to deal with recommender system. A system that recommends products or services to user based on their past experience. We will focus more on Collaborative Filtering and Content-Based Recommender System. Although, we have a Knowledged-Based Recommender System, Hybrid System that combine the two together, but our focus on this project would be based on the former.

You may want to ask, what is COllaborative Filtering?. A Collaborative Filtering is a method of making automatic predictions or filtering about the interests of a user by collecting preferences or taste information from many users.Similarity of items is determined by the similarity of the ratings of those items by the users who have rated both items.

Colaborative filtering make use of algorithms that require the following: * Users’ active participation * User interest representation * Matching people with similar interest together using algorithm.

Content-Based: This systems focus on properties of items. Similarity of items is determined by measuring the similarity in their properties.

Methodology:

  • We will build an Item-Item determining relationship between pairs of items
  • we will also infer the tastes of current user by examing the matrix and matching that user’s data.

We will be making use of both Spark and Base R environment.

Kindly install the packages below before loading it(If you dont already have them installed).

options(warn = -1)

suppressMessages(library(knitr))
suppressMessages(library(sparklyr))
suppressMessages(library(SparkR))
suppressMessages(library(dplyr))
suppressMessages(library(randomForest))
suppressMessages(library(magrittr))
suppressMessages(library(reshape2))
suppressMessages(library(recommenderlab))
suppressMessages(library(tidyr))
suppressWarnings(library(ggplot2))
## 
## Attaching package: 'ggplot2'
## The following object is masked from 'package:randomForest':
## 
##     margin
suppressMessages(library(e1071))

Euclidean Distance:

This is distance between two points in the plane with coordinates(x,y) and (a,b) which can also be mathematically represented as

\(Euclidean\quad Distaince(x,y)\quad =\quad \sqrt { \sum _{ i=1 }^{ n }{ { |{ x }_{ i } }-\quad { y }_{ i }|^{ 2 } } }\)

Correlation:

This a statistical technique that is used to show and determine how strongly pairs of variables are related.

\({ \rho }_{ x,y }\quad =\frac { cov(X,Y) }{ { \sigma }_{ x }{ \sigma }_{ y } }\)

Distance:

This is majorly used in a binary datasets to determine the distance between two items.

\(distance(ItemA,ItemB)\quad =\quad \frac { ItemA\cap ItemB }{ ItemA\cup ItemB }\)

We are going to connect spark using our local machine.

# LOCAL CONNECTION:

sc <- spark_connect(master = "local", version = "2.1.0")

Checking if Spark is connected or not

spark_connection_is_open(sc)
## [1] TRUE

Read the dataset from the local machine and renaming the columns as appropriate.

ratings_df <- read.csv("C:/Users/mayowa/Downloads/ml-latest-small/ml-latest-small/ratings.csv", head=T)

movies_df <- read.csv("C:/Users/mayowa/Downloads/ml-latest-small/ml-latest-small/movies.csv", head=T)
colnames(ratings_df)[1:3] <- c("user","item","rating")
colnames(movies_df)[1:3] <- c("user","title","genres")
head(ratings_df)
##   user item rating  timestamp
## 1    1   31    2.5 1260759144
## 2    1 1029    3.0 1260759179
## 3    1 1061    3.0 1260759182
## 4    1 1129    2.0 1260759185
## 5    1 1172    4.0 1260759205
## 6    1 1263    2.0 1260759151

How would their combination look like? lets combine the two datasets into one using “user” as a link.

combined_dataset <- merge(ratings_df, movies_df,by="user",na.rm=TRUE)
kable(head(combined_dataset))
user item rating timestamp title genres
1 3671 3.0 1260759117 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy
1 2968 1.0 1260759200 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy
1 1061 3.0 1260759182 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy
1 2105 4.0 1260759139 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy
1 1293 2.0 1260759148 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy
1 2455 2.5 1260759113 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy
uirt <- combined_dataset[, c(1, 2,3,5)]
kable(head(uirt))
user item rating title
1 3671 3.0 Toy Story (1995)
1 2968 1.0 Toy Story (1995)
1 1061 3.0 Toy Story (1995)
1 2105 4.0 Toy Story (1995)
1 1293 2.0 Toy Story (1995)
1 2455 2.5 Toy Story (1995)

Here, we can see clearly that correlation may not be suitable to

cor(uirt$item, y =uirt$user , use = "everything",method = c("pearson", "kendall", "spearman"))
## [1] -0.01738788

Reading the datasets into Spark environment.

spark_rating <- spark_read_csv(sc, "spark_rating", "C:/Users/mayowa/Downloads/ml-latest-small/ml-latest-small/ratings.csv", header = TRUE,infer_schema = TRUE,charset = "UTF-8", null_value = NULL,repartition = 0, memory = TRUE, overwrite = TRUE)


spark_movies <- spark_read_csv(sc, "spark_movies", "C:/Users/mayowa/Downloads/ml-latest-small/ml-latest-small/movies.csv", header = TRUE,infer_schema = TRUE,charset = "UTF-8", null_value = NULL,repartition = 0, memory = TRUE, overwrite = TRUE)


class(spark_rating) # The class is now spark table,sql table etc
## [1] "tbl_spark" "tbl_sql"   "tbl_lazy"  "tbl"
#class(spark_rating)

Is it actually a SQL table? Lets check…

suppressMessages(library(DBI))
my_table <- DBI::dbGetQuery(sc , "SELECT * FROM spark_rating LIMIT 10")
kable(my_table)
userId movieId rating timestamp
1 31 2.5 1260759144
1 1029 3.0 1260759179
1 1061 3.0 1260759182
1 1129 2.0 1260759185
1 1172 4.0 1260759205
1 1263 2.0 1260759151
1 1287 2.0 1260759187
1 1293 2.0 1260759148
1 1339 3.5 1260759125
1 1343 2.0 1260759131

Spark Test & Train Dataset.

To implement a model build up, we will train our dataset and validate it using test dataset. This can be done by splitting them into test and train.

The train dataset would take 80% of the dataset, while the remaing 20% goes to test.

spark_rating <- select(spark_rating, -timestamp)

spark_train <- sdf_sample(spark_rating, fraction = 0.8, replacement = FALSE, seed = 123)

spark_test <- sdf_sample(spark_rating, fraction = 0.2, replacement = FALSE, seed = 123)

kable(head(spark_train))
userId movieId rating
1 31 2.5
1 1172 4.0
1 1263 2.0
1 1287 2.0
1 1293 2.0
1 1343 2.0
kable(head(spark_test))
userId movieId rating
1 1287 2
1 1343 2
1 2105 4
1 3671 3
2 153 4
2 185 3

Or this method.

partition <- sdf_partition(spark_rating,training=0.8, testing=0.2)


sdf_register(partition,c("train_spark","test_spark"))
## $train_spark
## Source:   query [8e+04 x 3]
## Database: spark connection master=local[4] app=sparklyr local=TRUE
## 
##    userId movieId rating
##     <int>   <int>  <dbl>
## 1       1      31    2.5
## 2       1    1061    3.0
## 3       1    1172    4.0
## 4       1    1263    2.0
## 5       1    1287    2.0
## 6       1    1293    2.0
## 7       1    1339    3.5
## 8       1    1343    2.0
## 9       1    1371    2.5
## 10      1    1953    4.0
## # ... with 7.999e+04 more rows
## 
## $test_spark
## Source:   query [2e+04 x 3]
## Database: spark connection master=local[4] app=sparklyr local=TRUE
## 
##    userId movieId rating
##     <int>   <int>  <dbl>
## 1       1    1029    3.0
## 2       1    1129    2.0
## 3       1    1405    1.0
## 4       1    2150    3.0
## 5       1    2455    2.5
## 6       2     150    5.0
## 7       2     153    4.0
## 8       2     161    3.0
## 9       2     235    3.0
## 10      2     261    4.0
## # ... with 1.999e+04 more rows
test_rating <- tbl(sc,"test_spark")


tab <- tbl(sc,"train_spark") %>% select(userId, movieId, rating)
rating_model <- tab %>% ml_decision_tree(response="rating", features=c("userId","movieId"))
## * No rows dropped by 'na.omit' call

Spark Ratings prediction

A side-by-side glipmse of original ratings values and predicted values using spark

pred_spark <- sdf_predict(rating_model, test_rating) %>% collect

kable(head(pred_spark))
userId movieId rating prediction
1 1029 3.0 3.769757
1 1129 2.0 3.769757
1 1405 1.0 3.380091
1 2150 3.0 3.846154
1 2455 2.5 3.163677
2 150 5.0 3.334603

The above table shows side-by-side prediction of the ratings.

sqrt(mean(with(pred_spark, pred_spark)^2))
## [1] 14513.99
spark_disconnect(sc) # Disconnecting spark

Now on base R

genre_list <- c("Action", "Adventure", "Animation", "Children", "Comedy", "Crime","Documentary", "Drama", "Fantasy","Film-Noir", "Horror", "Musical", "Mystery","Romance","Sci-Fi", "Thriller", "War", "Western")
 
mat_genre <- matrix(0,8571,18) #empty matrix
mat_genre[1,] <- genre_list #set first row to genre list
colnames(mat_genre) <- genre_list #set column names to genre list
 

 
#convert into dataframe and removing the first row,that was in genres list above
mat_genre_2 <- as.data.frame(mat_genre[-1,], stringsAsFactors=FALSE) 
for (c in 1:ncol(mat_genre_2)) {
  mat_genre_2[,c] <- as.integer(mat_genre_2[,c])
}

Base R splitting of train and test dataset

set.seed(123)

ratings_df[is.na(ratings_df)] <- 0
samp_data <- ratings_df[sample(nrow(ratings_df)),]
samp_sub<- samp_data[,-c(4)]
train_dat <- subset(samp_sub[1:80003, ]) #80 percent
test_dat <- subset(samp_sub[80004:100004, ]) #20 percent

Test and train data structures.

str(ratings_df)# Note the ommision of timestamp
## 'data.frame':    100004 obs. of  4 variables:
##  $ user     : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ item     : int  31 1029 1061 1129 1172 1263 1287 1293 1339 1343 ...
##  $ rating   : num  2.5 3 3 2 4 2 2 2 3.5 2 ...
##  $ timestamp: int  1260759144 1260759179 1260759182 1260759185 1260759205 1260759151 1260759187 1260759148 1260759125 1260759131 ...
str(train_dat)
## 'data.frame':    80003 obs. of  3 variables:
##  $ user  : int  212 547 294 587 624 23 384 595 396 326 ...
##  $ item  : int  2915 1569 6296 1269 3255 5952 2000 1220 292 3308 ...
##  $ rating: num  3 3.5 4.5 4.5 4 4 4 4 4 3 ...
str(test_dat)
## 'data.frame':    20001 obs. of  3 variables:
##  $ user  : int  647 664 316 486 262 203 509 367 388 451 ...
##  $ item  : int  2916 8528 6378 541 4914 913 3095 4963 1485 2858 ...
##  $ rating: num  3 3.5 3 5 3.5 4 4 3 4 4 ...

Below we will reshape2 package to cast the train dataset, convert it to matrix first and later to recommerlab “realRatingMatrix”, normalized it and a visual representation of it (plot).

train_dat_casting <- acast(data=train_dat,train_dat$userId~train_dat$movieId)
## Using rating as value column: use value.var to override.
## Aggregation function missing: defaulting to length
rating_matx <- as.matrix(train_dat_casting)

rating_ind <- as(rating_matx,"realRatingMatrix")
head(as(rating_ind ,"list"),1)
## $.
##     . 
## 80003
head(as(rating_ind ,"data.frame"),1)
##   user item rating
## 1    .    .  80003
image(rating_ind,main="Raw Ratings")#Raw--->Non-Normalized

rating_norm <-normalize(rating_ind)
image(rating_norm,main="Normalized Ratings")#Normalized

On movies dataset

# let us vectorised the movies_df
ratings_vec <- as.vector(movies_df)
#unique(ratings_vec)

ratings_vec <- ratings_vec[ratings_vec != 0]
ratings_vec <- factor(ratings_vec)

head(ratings_vec)
## [1]      1      2      3      4      5      6
## 19150 Levels: 'burbs, The (1989) ... Zulu (2013)
test_data_mat <- as(test_dat, "realRatingMatrix")
test_dat_bin <- as(test_dat, "binaryRatingMatrix")
library(recommenderlab)

movies_RRM <- as(movies_df, "realRatingMatrix")


views_per_movie <- colCounts(movies_RRM)

table_views <- data.frame(
movie = names(views_per_movie),
views = views_per_movie
)
table_views <- table_views[order(table_views$views, decreasing =
TRUE), ]

ggplot(table_views[1:7, ], aes(x = movie, y = views)) +
geom_bar(stat="identity") + theme(axis.text.x =
element_text(angle = 25, hjust = 1)) + ggtitle("Number of views
of the top movies")

The above plot shows the top number of movies watched since 1989 to year 2005.

Cosine Similarity :

Thisis a measure of similarity between two non-zero vectors of an inner product space that measures the cosine of the angle between them.

$Similarity=cos()= $

users_sim <- similarity(movies_RRM[1:2500, ], method =
"cosine", which = "users")

image(as.matrix(users_sim), main = "Similarity in Users")

ratings_matrix <- as(train_dat, "binaryRatingMatrix")
number_of_users <- colCounts(ratings_matrix);
qplot(number_of_users) + stat_bin(binwidth = 20) + ggtitle("Distribution of the number of users");
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

model2 <- Recommender(data = ratings_matrix, method = "UBCF", parameter = list(method = "Jaccard"))
test_data_mat <- as(test_dat, "realRatingMatrix")
test_dat_bin <- as(test_dat, "binaryRatingMatrix")

recomm <- Recommender(test_data_mat[1:nrow(test_data_mat)],method="UBCF",
                           param=list(normalize="Z-score",method="Cosine"
                                      ,nn=5,minRating=1))
## Available parameter (with default values):
## method    =  cosine
## nn    =  25
## sample    =  FALSE
## normalize     =  center
## verbose   =  FALSE
recommed <-predict(recomm,test_data_mat[1:nrow(test_data_mat)],type="ratings")
recommed_topN <-predict(recomm,test_data_mat[1:nrow(test_data_mat)],type="topNList",n=10)
head(as(recommed_topN,"list"),5)
## $`1`
##  [1] "2028"  "922"   "1197"  "2959"  "59369" "89745" "1663"  "2109" 
##  [9] "2947"  "6058" 
## 
## $`2`
##  [1] "318"   "110"   "527"   "5989"  "8529"  "79132" "63082" "84152"
##  [9] "1"     "2"    
## 
## $`3`
##  [1] "356"  "1580" "539"  "2"    "349"  "364"  "593"  "597"  "661"  "1028"
## 
## $`4`
##  [1] "39"   "1682" "377"  "1545" "296"  "349"  "457"  "236"  "356"  "357" 
## 
## $`5`
##  [1] "337"  "471"  "562"  "898"  "912"  "922"  "930"  "1029" "1057" "1175"
qplot(getRatings(test_data_mat),binwidth=1,col="blue",main="Ratings Plot",xlab="Ratings")

hist(getRatings(test_data_mat),binwidth=1,col="black",breaks=15,main="Histogram of Ratings",xlab="Ratings");

qplot(getRatings(rating_norm),binwidth=1,main="Normalized Ratings",xlab="Ratings")

qplot(rowCounts(test_data_mat),binwidth=10,main="Movie Average Ratings",xlab="Number of users",ylab = "Number of movie ratings")

qplot(colMeans(test_data_mat),binwidth=.1,main="   Mean Ratings  ",xlab="Ratings",ylab = "Number of movies")

rating_bin <- binarize(test_data_mat,minRating=1)
head(as(rating_bin,"matrix"),1)
##       1     2     3     4     5     6     7     8     9    10    11    12
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##      13    14    15    16    17    18    19    20    21    22    23    24
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##      25    26    27    28    29    30    31    32    34    35    36    39
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##      40    41    42    43    44    45    46    47    48    50    52    55
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##      57    58    59    60    61    62    65    66    68    69    70    71
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##      73    74    76    78    79    80    81    82    83    85    86    87
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##      88    89    92    94    95    96    97   100   101   102   103   104
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     105   107   110   111   112   113   117   122   123   125   126   132
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     135   140   141   144   145   147   149   150   151   152   153   154
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     155   156   158   159   160   161   162   163   164   165   168   169
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     170   171   172   173   175   176   177   179   180   181   185   186
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     188   189   191   193   194   195   196   198   203   204   205   207
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     208   209   213   215   216   217   218   220   222   223   224   225
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     227   229   230   231   232   233   234   235   236   237   238   239
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     240   242   243   246   247   248   249   250   252   253   254   256
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     257   258   259   260   261   262   265   266   267   269   270   271
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     272   273   275   276   277   278   279   280   281   282   287   288
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     289   290   292   293   294   295   296   299   300   302   303   304
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     305   306   307   308   312   313   314   315   316   317   318   319
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     320   321   322   324   326   327   328   329   330   332   333   334
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     335   337   338   339   340   341   342   344   345   346   347   348
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     349   350   351   352   353   355   356   357   358   360   361   362
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     363   364   365   366   367   368   370   371   372   373   374   375
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     376   377   378   379   380   381   382   383   384   387   391   393
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     405   407   408   409   410   412   413   414   415   417   418   419
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     420   421   422   423   426   427   428   431   432   433   434   435
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     436   437   438   440   441   442   443   444   445   446   448   449
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     450   451   452   454   455   456   457   458   459   460   463   464
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     465   466   468   469   470   471   474   475   477   479   480   481
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     482   483   484   485   488   489   490   491   492   493   494   495
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     496   497   500   501   502   504   505   506   507   508   509   511
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     512   514   515   516   517   518   519   520   521   522   523   524
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     527   529   531   532   534   535   536   537   538   539   540   541
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     542   543   544   546   548   549   550   551   552   553   555   556
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     558   559   562   567   569   575   581   585   586   587   588   589
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     590   592   593   594   595   596   597   599   605   606   608   609
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     610   611   612   613   614   616   619   627   628   630   631   633
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     637   638   639   640   647   648   650   653   661   663   665   667
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     671   673   674   678   679   681   685   688   691   694   695   697
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     698   700   703   704   707   708   709   711   714   715   719   720
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     724   728   733   735   736   737   741   742   743   745   747   748
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     750   761   762   765   766   778   779   780   781   783   784   785
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     786   788   798   799   800   801   802   803   804   805   806   808
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     809   810   813   816   818   820   828   830   831   832   835   837
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     838   839   840   841   846   848   849   850   852   858   861   866
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     869   879   880   892   898   899   900   901   902   903   904   905
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     906   907   908   909   910   911   912   913   914   915   916   918
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     919   920   921   922   923   924   926   927   928   929   930   931
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     932   933   934   935   936   937   938   940   942   943   944   945
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     946   947   948   949   950   951   952   953   954   955   957   960
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     961   965   966   968   969   970   971   980   982   986   991   994
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##     996   998   999  1003  1004  1005  1007  1008  1009  1012  1013  1014
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1015  1016  1017  1018  1019  1020  1021  1022  1023  1025  1027  1028
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   1029  1030  1031  1032  1033  1034  1035  1036  1037  1041  1042  1043
## 1 TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1044  1046  1047  1049  1050  1051  1053  1055  1057  1059  1060  1061
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1063  1064  1066  1068  1073  1077  1078  1079  1080  1081  1082  1083
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1084  1085  1086  1087  1088  1089  1090  1091  1092  1093  1094  1095
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1096  1097  1099  1100  1101  1103  1104  1105  1112  1114  1120  1124
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1125  1126  1127  1128 1129  1130  1131  1132  1133  1135  1136  1147
## 1 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1148  1150  1161  1162  1169  1171  1172  1173  1175  1176  1177  1178
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1179  1181  1183  1184  1185  1186  1187  1188  1189  1190  1191  1193
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1194  1196  1197  1198  1199  1200  1201  1202  1203  1204  1206  1207
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1208  1209  1210  1211  1212  1213  1214  1215  1216  1217  1218  1219
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1220  1221  1222  1223  1224  1225  1226  1227  1228  1230  1231  1232
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1233  1234  1235  1236  1237  1238  1240  1241  1242  1243  1244  1245
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1246  1247  1248  1249  1250  1251  1252  1253  1254  1255  1256  1257
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1258  1259  1260  1261  1262  1263  1264  1265  1266  1267  1268  1269
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1270  1271  1272  1273  1274  1275  1276  1277  1278  1279  1280  1281
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1282  1283  1284  1285  1286  1287  1288  1289  1290  1291  1292  1293
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1295  1296  1297  1298  1299  1300  1301  1302  1303  1304  1305  1306
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1307  1310  1320  1321  1326  1327  1332  1333  1334  1335  1337  1339
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1340  1342  1343  1344  1345  1346  1347  1348  1349  1350  1352  1353
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1354  1355  1356  1357  1358  1359  1361  1363  1365  1366  1367  1370
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1371  1372  1373  1374  1375  1376  1377  1378  1379  1380  1381  1385
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1387  1388  1389  1391  1392  1393  1394  1395  1396  1397  1399 1405
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
##    1406  1407  1408  1409  1410  1411  1413  1414  1416  1422  1425  1429
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1432  1437  1438  1441  1442  1446  1447  1449  1453  1457  1458  1459
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1460  1461  1463  1464  1465  1466  1468  1474  1475  1476  1479  1480
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1483  1484  1485  1487  1488  1490  1493  1495  1497  1498  1499  1500
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1502  1503  1507  1508  1513  1515  1516  1517  1518  1525  1527  1529
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1537  1541  1542  1543  1544  1545  1546  1552  1554  1556  1562  1566
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1569  1572  1573  1580  1582  1584  1586  1587  1588  1589  1590  1591
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1592  1593  1594  1595  1597  1601  1604  1605  1608  1610  1611  1612
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1614  1615  1616  1617  1619  1620  1621  1623  1625  1626  1632  1633
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1635  1636  1639  1641  1642  1643  1644  1645  1646  1647  1648  1649
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1653  1655  1657  1658  1661  1663  1665  1672  1673  1674  1676  1678
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1680  1681  1682  1683  1684  1687  1688  1689  1690  1693  1694  1699
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1701  1702  1703  1704  1707  1711  1713  1715  1717  1719  1721  1722
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1726  1727  1728  1729  1730  1732  1734  1739  1747  1748  1752  1753
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1760  1769  1772  1777  1779  1784  1791  1792  1797  1799  1801  1804
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1805  1807  1809  1810  1816  1821  1824  1826  1827  1831  1833  1834
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1835  1836  1839  1840  1841  1845  1848  1852  1856  1858  1859  1862
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1863  1865  1866  1873  1874  1875  1876  1882  1883  1884  1885  1887
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1888  1892  1894  1895  1897  1900  1904  1907  1909  1911  1912  1914
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1916  1917  1918  1920  1921  1923  1924  1925  1926  1927  1928  1931
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1933  1934  1935  1936  1937  1938  1939  1940  1941  1942  1943  1944
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1945  1946  1947  1948  1949  1950  1951  1952  1953  1954  1955  1956
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1957  1958  1959  1960  1961  1962  1963  1964  1965  1966  1967  1968
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1969  1970  1972  1974  1975  1977  1979  1982  1983  1984  1991  1992
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    1993  1994  1995  1997  2000  2001  2002  2003  2004  2005  2006  2007
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2021  2022  2023  2025  2026  2027  2028  2033  2034  2038  2040  2041
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2042  2044  2045  2046  2050  2052  2053  2054  2055  2056  2057  2058
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2059  2060  2064  2065  2066  2067  2068  2069  2070  2071  2072  2073
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2075  2076  2077  2078  2080  2081  2082  2083  2084  2085  2087  2088
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2089  2090  2092  2093  2094  2096  2099  2100  2101  2104  2105  2106
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2107  2108  2109  2110  2111  2112  2114  2115  2116  2117  2118  2119
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2120  2121  2122  2123  2124  2125  2126  2128  2130  2132  2133  2134
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2135  2136  2137  2138  2139  2140  2141  2142  2143  2144  2145  2146
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2148  2149  2150  2151  2152  2153  2155  2159  2160  2161  2162  2163
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2164  2165  2166  2167  2169  2170  2171  2173  2174  2176  2178  2183
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2184  2186  2187  2188 2193  2194  2201  2202  2203  2208  2231  2232
## 1 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2236  2237  2240  2241  2243  2244  2245  2247  2248  2249  2250  2252
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2253  2257  2262  2265  2266  2268  2269  2272  2273  2278  2279  2280
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2282  2286  2287  2288  2289  2290  2291  2294  2295  2296  2300  2301
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2302  2303  2306  2307  2310  2311  2312  2313  2316  2318  2320  2321
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2322  2324  2329  2331  2333  2334  2335  2336  2337  2338  2340  2345
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2346  2347  2348  2349  2351  2352  2353  2355  2357  2359  2360  2361
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2363  2366  2367  2369  2370  2371  2372  2373  2374  2375  2376  2378
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2379  2380  2381  2382  2383  2384  2385  2386  2387  2389  2391  2392
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2394  2395  2396  2397  2398  2399  2401  2402  2403  2404  2405  2406
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2407  2408  2409  2410  2411  2412  2413  2414  2416  2417  2418  2419
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2420  2421  2422  2423  2424  2425  2427  2428  2429  2430  2431  2432
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2433  2434  2436  2439  2443  2445  2447  2448  2450  2451  2453  2454
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2455  2456  2457  2458  2459  2460  2462  2463  2464  2465  2467  2468
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2469  2470  2471  2473  2474  2478  2481  2482  2483  2485  2488  2490
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2491  2492  2493  2495  2496  2497  2500  2501  2502  2504  2505  2506
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2513  2517  2518  2520  2521  2522  2523  2524  2527  2528  2529  2530
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2531  2532  2533  2535  2537  2539  2541  2542  2546  2548  2549  2551
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2554  2557  2558  2561  2563  2565  2567  2568  2571  2572  2574  2575
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2577  2579  2580  2581  2582  2583  2587  2589  2590  2594  2596  2597
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2598  2599  2600  2605  2606  2609  2610  2612  2613  2616  2617  2622
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2625  2626  2628  2629  2630  2634  2635  2636  2637  2638  2639  2640
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2641  2642  2643  2648  2649  2651  2653  2654  2657  2659  2661  2662
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2664  2668  2671  2672  2676  2681  2682  2683  2686  2687  2688  2690
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2692  2693  2694  2696  2699  2700  2701  2702  2704  2706  2707  2709
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2710  2712  2713  2715  2716  2717  2718  2719  2720  2722  2723  2724
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2725  2726  2727  2728  2729  2730  2731  2732  2733  2734  2735  2736
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2739  2745  2746  2747  2749  2750  2752  2753  2754  2757  2759  2761
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2762  2763  2764  2769  2770  2771  2772  2774  2779  2780  2781  2782
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2787  2788  2789  2791  2792  2793  2794  2795  2796  2797  2798  2799
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2801  2802  2803  2804  2805  2806  2808  2809  2810  2812  2815  2816
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2819  2820  2822  2826  2827  2828  2829  2836  2840  2841  2843  2845
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2847  2851  2852  2855  2856  2857  2858  2859  2860  2861  2862  2863
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2866  2868  2870  2871  2872  2875  2876  2877  2878  2879  2880  2881
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2882  2883  2885  2888  2889  2890  2892  2899  2900  2902  2903  2905
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2906  2907  2908  2912  2915  2916  2917  2918  2919  2920  2921  2922
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2924  2925  2926  2929  2935  2936  2937  2938  2940  2941  2942  2943
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2944  2946  2947  2948  2949  2950  2951  2952  2953  2959  2961  2966
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2967  2968  2970  2971  2973  2974  2976  2978  2985  2986  2987  2988
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    2989  2990  2991  2992  2993  2995  2996  2997  3000  3004  3005  3006
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3007  3011  3016  3017  3018  3019  3020  3022  3028  3030  3033  3034
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3035  3036  3037  3039  3040  3042  3044  3045  3051  3052  3053  3057
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3060  3061  3062  3064  3066  3067  3068  3069  3070  3071  3072  3074
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3076  3077  3079  3081  3082  3083  3086  3087  3088  3089  3090  3094
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3095  3096  3097  3098  3099  3100  3101  3102  3103  3104  3105  3106
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3107  3108  3111  3113  3114  3115  3117  3120  3122  3125  3127  3129
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3130  3133  3134  3135  3138  3141  3142  3145  3146  3147  3148  3150
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3152  3153  3155  3156  3157  3159  3160  3163  3165  3167  3168  3169
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3173  3174  3175  3176  3178  3179  3180  3181  3182  3183  3185  3186
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3189  3190  3194  3196  3198  3199  3201  3203  3204  3208  3210  3211
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3213  3217  3218  3219  3223  3235  3238  3240  3241  3243  3244  3246
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3247  3248  3249  3250  3251  3252  3253  3254  3255  3256  3257  3258
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3259  3260  3261  3262  3263  3264  3265  3266  3267  3268  3270  3271
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3272  3273  3274  3275  3285  3286  3287  3289  3296  3298  3299  3300
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3301  3306  3307  3308  3316  3317  3318  3324  3326  3328  3330  3331
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3334  3340  3341  3347  3350  3354  3355  3358  3359  3360  3361  3362
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3363  3364  3365  3368  3371  3384  3385  3386  3387  3388  3390  3392
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3394  3396  3397  3398  3400  3401  3404  3406  3408  3409  3412  3414
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3418  3420  3421  3422  3423  3424  3426  3428  3429  3430  3434  3435
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3436  3438  3439  3440  3441  3442  3444  3445  3446  3448  3450  3451
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3452  3457  3459  3461  3462  3466  3467  3468  3469  3470  3471  3476
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3477  3478  3479  3481  3483  3484  3489  3491  3494  3499  3501  3503
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3504  3505  3508  3509  3510  3512  3513  3515  3516  3519  3520  3521
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3524  3525  3526  3527  3528  3529  3534  3535  3536  3538  3539  3540
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3543  3544  3545  3546  3548  3549  3551  3552  3555  3556  3557  3559
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3563  3564  3565  3566  3569  3573  3574  3575  3576  3577  3578  3579
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3581  3590  3591  3593  3594  3604  3606  3608  3613  3614  3615  3616
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3617  3618  3623  3624  3626  3629  3633  3634  3635  3637  3638  3639
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3646  3649  3653  3654  3658  3668  3669 3671  3672  3673  3674  3675
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
##    3676  3677  3679  3681  3682  3683  3684  3685  3686  3688  3689  3690
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3693  3694  3696  3697  3698  3699  3701  3702  3703  3704  3705  3706
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3709  3712  3713  3717  3723  3724  3726  3728  3729  3730  3731  3733
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3734  3735  3736  3739  3740  3741  3742  3744  3745  3747  3751  3752
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3753  3754  3755  3760  3761  3763  3766  3769  3771  3774  3783  3784
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3785  3786  3788  3789  3791  3792  3793  3794  3795  3798  3799  3801
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3802  3806  3809  3810  3811  3812  3813  3814  3819  3821  3822  3823
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3825  3826  3827  3831  3835  3836  3839  3840  3841  3843  3844  3849
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3852  3854  3857  3859  3861  3863  3864  3865  3868  3869  3870  3871
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3872  3873  3879  3882  3886  3892  3893  3896  3897  3903  3908  3910
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3911  3915  3916  3917  3918  3922  3925  3927  3928  3929  3932  3937
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3939  3943  3948  3949  3950  3952  3959  3963  3965  3967  3968  3969
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3972  3973  3975  3977  3978  3979  3980  3981  3983  3984  3986  3987
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    3988  3991  3992  3993  3994  3996  3997  3998  3999  4001  4002  4005
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4006  4007  4008  4009  4010  4011  4012  4014  4015  4016  4017  4018
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4019  4020  4021  4022  4023  4024  4025  4027  4029  4030  4031  4033
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4034  4036  4037  4039  4040  4041  4051  4054  4055  4056  4060  4061
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4062  4063  4066  4067  4069  4080  4081  4084  4085  4086  4088  4090
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4102  4103  4104  4105  4109  4116  4117  4121  4124  4128  4130  4132
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4144  4148  4149  4155  4156  4159  4161  4166  4167  4174  4177  4178
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4181  4184  4187  4190  4191  4205  4208  4210  4211  4212  4214  4217
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4218  4220  4221  4223  4225  4226  4232  4234  4235  4236  4237  4238
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4239  4246  4247  4252  4254  4255  4262  4263  4267  4270  4273  4274
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4275  4277  4280  4281  4282  4291  4292  4293  4296  4298  4299  4302
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4304  4306  4308  4310  4312  4316  4317  4318  4319  4321  4322  4326
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4327  4329  4333  4334  4337  4338  4340  4342  4343  4344  4345  4349
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4351  4356  4357  4359  4361  4366  4367  4369  4370  4371  4372  4375
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4378  4380  4381  4384  4388  4396  4406  4407  4410  4411  4420  4427
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4432  4437  4438  4441  4444  4446  4447  4448  4450  4452  4464  4465
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4467  4469  4470  4478  4480  4483  4487  4488  4489  4492  4496  4499
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4500  4501  4503  4508  4515  4518  4519  4520  4521  4522  4533  4535
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4537  4544  4545  4553  4557  4558  4562  4563  4564  4565  4568  4570
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4571  4577  4585  4592  4603  4612  4614  4616  4621  4622  4623  4627
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4628  4629  4634  4638  4639  4640  4641  4642  4643  4644  4649  4652
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4654  4658  4660  4664  4673  4677  4678  4681  4682  4686  4688  4692
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4700  4701  4705  4709  4710  4713  4714  4718  4719  4720  4721  4722
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4723  4727  4732  4733  4734  4736  4743  4744  4749  4753  4755  4756
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4757  4765  4766  4768  4772  4775  4776  4783  4784  4787  4792  4795
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4799  4800  4803  4804  4809  4811  4812  4814  4816  4818  4822  4823
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4831  4832  4833  4834  4835  4836  4837  4842  4844  4846  4848  4854
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4855  4857  4859  4865  4866  4873  4874  4878  4880  4881  4886  4889
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4890  4896  4897  4898  4899  4901  4911  4912  4914  4915  4925  4929
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4930  4932  4936  4941  4945  4947  4951  4956  4958  4963  4965  4967
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4968  4969  4970  4971  4973  4974  4975  4978  4979  4980  4993  4994
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    4995  4998  5002  5008  5009  5010  5013  5014  5015  5017  5018  5025
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5026  5027  5034  5046  5047  5048  5049  5053  5055  5060  5061  5064
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5066  5069  5072  5073  5074  5081  5095  5097  5103  5107  5108  5110
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5114  5119  5120  5122  5128  5134  5135  5146  5151  5152  5161  5165
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5168  5171  5172  5193  5202  5203  5214  5218  5219  5220  5222  5225
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5226  5237  5241  5242  5243  5247  5250  5254  5258  5264  5266  5267
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5269  5275  5276  5277  5283  5291  5292  5293  5294  5296  5298  5299
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5301  5302  5303  5304  5308  5309  5312  5313  5316  5319  5323  5329
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5337  5339  5341  5346  5349  5357  5363  5364  5373  5375  5377  5378
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5380  5382  5384  5385  5388  5389  5391  5400  5401  5404  5415  5418
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5419  5421  5438  5444  5445  5446  5447  5449  5450  5452  5459  5463
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5464  5470  5477  5478  5479  5480  5481  5483  5489  5490  5500  5502
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5504  5505  5507  5508  5517  5521  5522  5523  5524  5525  5527  5528
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5530  5534  5535  5539  5540  5541  5544  5553  5562  5568  5569  5572
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5574  5577  5585  5588  5602  5607  5609  5618  5620  5621  5625  5628
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5630  5633  5636  5641  5642  5644  5650  5667  5668  5669  5670  5673
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5675  5678  5679  5682  5690  5693  5703  5705  5707  5712  5729  5735
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5737  5747  5752  5765  5772  5777  5779  5782  5784  5785  5787  5788
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5791  5792  5796  5801  5809  5810  5812  5816  5826  5828  5834  5836
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5853  5859  5867  5872  5875  5876  5878  5879  5880  5881  5882  5891
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5899  5900  5902  5903  5915  5917  5918  5927  5933  5938  5940  5942
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5943  5944  5945  5949  5952  5954  5955  5956  5957  5959  5963  5968
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    5969  5971  5985  5989  5991  5992  5994  5995  6001  6003  6005  6013
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6014  6016  6021  6027  6058  6059  6062  6092  6101  6104  6114  6115
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6122  6125  6133  6143  6148  6154  6155  6156  6157  6162  6182  6184
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6187  6188  6197  6214  6215  6218  6219  6227  6231  6235  6239  6240
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6242  6243  6249  6252  6260  6261  6263  6264  6268  6269  6271  6281
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6283  6287  6291  6295  6296  6297  6299  6303  6308  6314  6315  6316
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6318  6323  6331  6333  6350  6357  6358  6365  6367  6373  6375  6377
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6378  6379  6380  6383  6385  6390  6395  6405  6410  6412  6413  6424
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6426  6427  6428  6432  6433  6436  6440  6447  6448  6458  6461  6465
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6470  6476  6477  6480  6484  6498  6502  6503  6513  6521  6534  6535
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6537  6538  6539  6541  6548  6552  6561  6564  6565  6582  6584  6586
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6591  6592  6593  6595  6598  6599  6600  6612  6613  6615  6617  6618
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6620  6638  6639  6641  6650  6658  6659  6662  6665  6666  6669  6678
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6706  6707  6708  6709  6711  6718  6721  6724  6728  6731  6732  6753
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6754  6755  6763  6765  6768  6769  6770  6773  6774  6777  6783  6785
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6787  6788  6793  6796  6798  6800  6807  6811  6813  6816  6818  6820
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6851  6852  6856  6857  6863  6867  6869  6870  6873  6874  6879  6881
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6888  6889  6890  6893  6909  6918  6927  6932  6934  6936  6942  6944
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6947  6951  6952  6953  6954  6957  6958  6959  6963  6966  6971  6975
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6977  6979  6981  6982  6983  6985  6986  6987  6989  6990  6993  6995
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    6996  6999  7000  7001  7004  7005  7007  7008  7010  7013  7016  7017
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7022  7024  7025  7034  7036  7038  7046  7048  7055  7056  7058  7059
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7060  7063  7064  7065  7068  7072  7073  7074  7076  7078  7080  7084
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7089  7090  7091  7099  7101  7102  7107  7115  7116  7121  7123  7125
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7130  7132  7135  7137  7139  7142  7143  7147  7153  7154  7156  7158
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7161  7162  7163  7164  7173  7186  7206  7215  7216  7223  7234  7247
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7254  7255  7256  7265  7272  7285  7293  7302  7303  7305  7307  7308
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7316  7317  7318  7320  7323  7324  7325  7327  7346  7347  7348  7357
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7360  7361  7362  7367  7371  7373  7375  7376  7380  7381  7382  7386
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7387  7395  7396  7407  7411  7438  7444  7445  7448  7450  7451  7454
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7458  7460  7478  7481  7482  7484  7493  7502  7541  7560  7569  7570
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7572  7573  7577  7584  7587  7614  7615  7619  7649  7698  7714  7728
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7738  7748  7753  7764  7767  7792  7802  7810  7812  7822  7826  7827
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7831  7833  7834  7836  7840  7841  7842  7872  7882  7895  7899  7914
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    7925  7934  7935  7939  7941  7946  7980  7981  7983  7984  8003  8010
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8011  8012  8014  8019  8039  8094  8117  8125  8129  8132  8137  8138
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8154  8157  8158  8167  8169  8183  8195  8196  8199  8207  8225  8228
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8235  8239  8261  8264  8266  8290  8327  8331  8337  8360  8361  8363
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8366  8368  8369  8370  8371  8372  8373  8376  8385  8392  8423  8447
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8462  8464  8493  8507  8525  8528  8529  8530  8533  8537  8544  8574
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8581  8596  8600  8607  8610  8612  8614  8618  8622  8623  8625  8633
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8636  8638  8640  8641  8644  8645  8661  8665  8666  8667  8670  8695
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8718  8727  8730  8745  8751  8754  8783  8784  8796  8798  8807  8808
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8810  8811  8820  8827  8830  8831  8835  8836  8840  8861  8865  8866
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8870  8873  8874  8879  8880  8906  8907  8910  8914  8917  8918  8920
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8927  8928  8937  8938  8946  8947  8948  8949  8950  8957  8958  8961
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8963  8966  8969  8970  8972  8973  8981  8983  8984  8985  8986  8988
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##    8998  9010 25750 25752 25769 25788 25807 25825 25827 25850 25868 25874
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   25901 25937 25965 25971 26003 26009 26025 26052 26079 26084 26131 26133
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   26152 26178 26242 26258 26268 26271 26302 26317 26326 26346 26350 26366
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   26393 26400 26403 26404 26413 26472 26492 26494 26524 26547 26562 26581
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   26587 26606 26614 26649 26662 26701 26729 26731 26776 26809 26810 26838
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   26840 26865 26915 26974 27075 27156 27253 27255 27317 27322 27329 27338
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   27373 27397 27410 27416 27478 27482 27604 27611 27660 27674 27700 27704
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   27706 27721 27728 27731 27751 27768 27773 27778 27788 27790 27793 27801
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   27803 27808 27815 27821 27822 27826 27831 27838 27850 27867 27873 27878
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   27899 27904 27912 27922 30707 30712 30745 30749 30793 30803 30810 30812
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   30816 30820 30822 30825 30894 31026 31150 31162 31193 31221 31225 31284
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   31374 31410 31427 31431 31433 31435 31437 31522 31658 31660 31685 31696
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   31700 31878 31930 31952 32017 32025 32029 32031 32153 32234 32371 32395
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   32444 32456 32515 32582 32587 32598 32632 32735 32825 32844 32853 32943
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   33004 33124 33145 33154 33164 33166 33171 33312 33358 33437 33493 33587
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   33615 33621 33639 33660 33669 33679 33681 33683 33794 33817 33834 33836
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   33838 33880 33903 34018 34048 34143 34150 34153 34162 34164 34271 34319
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   34321 34323 34332 34334 34359 34364 34405 34435 34437 34523 34528 34530
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   34534 34542 34552 35836 35957 36152 36276 36517 36519 36525 36527 36529
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   36708 37240 37380 37386 37727 37729 37731 37733 37736 37741 37830 37857
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   38038 38061 38886 38992 38994 39183 39231 39234 39292 39398 39427 39435
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   39444 39446 39869 40148 40278 40339 40412 40414 40583 40629 40732 40815
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   40819 40851 41226 41285 41566 41569 41571 41714 41716 41997 42002 42004
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   42011 42015 42163 42191 42351 42418 42632 42677 42681 42723 42725 42728
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   42738 42946 43351 43558 43560 43635 43836 43869 43910 43917 43919 43928
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   43932 43936 44004 44022 44191 44193 44195 44199 44204 44555 44587 44613
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   44633 44665 44694 44709 44761 44788 44840 44972 44974 45172 45183 45186
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   45208 45210 45431 45447 45499 45501 45506 45517 45521 45720 45722 45728
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   45732 45880 45950 46062 46322 46335 46530 46578 46723 46850 46855 46948
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   46965 46967 46970 46972 46976 47044 47099 47152 47200 47254 47330 47382
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   47423 47491 47518 47610 47640 47721 47728 47815 47937 47978 47997 47999
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   48043 48082 48165 48301 48304 48322 48385 48394 48516 48520 48522 48593
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   48596 48660 48696 48738 48741 48774 48780 48783 48872 48877 48982 48997
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   49132 49272 49274 49278 49280 49286 49396 49528 49530 49647 49649 49651
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   49772 49822 49824 49910 49932 49957 50068 50147 50601 50651 50658 50703
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   50740 50742 50794 50798 50802 50872 50954 51077 51080 51086 51207 51255
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   51304 51372 51380 51418 51540 51662 51705 51709 51884 51925 51935 52245
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   52281 52287 52319 52328 52435 52458 52604 52606 52644 52694 52722 52767
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   52885 52913 52952 52973 52975 53000 53024 53121 53123 53125 53318 53322
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   53326 53464 53468 53519 53550 53956 53972 53974 53993 53996 53999 54001
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   54004 54190 54259 54272 54276 54286 54290 54331 54372 54503 54513 54732
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   54775 54881 54995 54997 55031 55052 55063 55071 55118 55232 55247 55250
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   55253 55267 55276 55280 55282 55290 55363 55442 55444 55451 55577 55757
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   55765 55768 55805 55820 55830 55851 55908 55995 55999 56145 56152 56156
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   56169 56171 56174 56176 56251 56286 56339 56367 56587 56607 56715 56757
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   56775 56782 56788 56801 56805 56885 56921 57274 57326 57368 57401 57430
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   57504 57526 57528 57532 57640 57669 58025 58029 58156 58293 58295 58299
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   58303 58306 58315 58347 58365 58520 58559 58655 58803 58964 58998 59022
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   59037 59126 59141 59306 59315 59333 59369 59387 59392 59421 59501 59615
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   59784 59810 59900 60040 60069 60072 60074 60126 60128 60295 60382 60487
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   60684 60756 60832 60950 61024 61026 61132 61167 61236 61240 61323 61361
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   61646 62081 62250 62344 62378 62434 62511 62956 62999 63072 63082 63113
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   63131 63436 63479 63808 63853 63859 63876 63992 64034 64249 64338 64497
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   64575 64614 64620 64695 64716 64839 64957 64969 64983 64993 65126 65130
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   65133 65259 65261 65418 65465 65514 65585 65665 65682 65802 66019 66066
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   66097 66130 66198 66203 66297 66310 66317 66427 66509 66665 66686 66934
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   67087 67193 67197 67255 67408 67665 67734 67923 67997 68073 68157 68159
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   68205 68237 68319 68347 68358 68486 68554 68791 68884 68901 68932 68945
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   68954 68959 69122 69275 69278 69280 69306 69406 69436 69481 69524 69526
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   69604 69606 69640 69644 69712 69746 69757 69784 69821 69844 69945 69951
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   70183 70188 70282 70286 70293 70599 70862 71033 71057 71106 71108 71131
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   71135 71248 71254 71264 71282 71304 71462 71464 71520 71535 71579 71732
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   71745 71838 71899 72011 72043 72209 72226 72378 72386 72395 72405 72641
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   72731 72737 72781 72998 73015 73017 73023 73101 73106 73266 73268 73290
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   73319 73321 73344 73469 73741 73808 73929 74089 74115 74154 74228 74275
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   74327 74450 74458 74486 74530 74532 74545 74580 74630 74685 74688 74698
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   74740 74789 74795 74851 74916 74948 75805 75823 75983 76060 76077 76091
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   76093 76111 76210 76251 76293 76303 77291 77359 77421 77455 77561 77658
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   77800 77846 78034 78209 78316 78499 78517 78574 78637 78836 79006 79057
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   79091 79132 79185 79242 79251 79259 79293 79299 79428 79553 79592 79686
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   79695 79702 79720 79796 80026 80126 80166 80219 80350 80363 80463 80489
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   80549 80551 80590 80727 80844 80862 80906 80969 81229 81512 81537 81562
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   81564 81591 81834 81845 81847 81932 82095 82169 82202 82378 82459 82461
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   82463 82852 82854 82934 83132 83134 83270 83332 83374 83480 83506 83613
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   83803 84152 84187 84236 84374 84392 84615 84637 84772 84844 84944 84952
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   84954 85022 85131 85179 85342 85367 85412 85414 85510 85774 85788 85796
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   85881 86142 86190 86293 86298 86320 86332 86345 86377 86548 86626 86644
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   86833 86880 86882 86911 87192 87222 87232 87234 87306 87383 87483 87485
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   87520 87529 87598 87660 87884 88125 88129 88140 88163 88179 88405 88744
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   88785 88810 88812 89085 89118 89260 89388 89470 89492 89745 89753 89759
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   89761 89774 89804 89837 89840 89864 89881 89904 90057 90266 90345 90376
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   90439 90647 90746 90866 90947 91077 91199 91273 91286 91355 91414 91483
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   91485 91500 91529 91535 91542 91630 91653 91658 91688 91842 92008 92210
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   92234 92259 92264 92420 92424 92439 92498 92507 92509 92535 92613 92665
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   92756 93272 93320 93326 93363 93422 93510 93831 93838 93840 94018 94266
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   94466 94478 94677 94777 94780 94833 94864 94959 95088 95115 95135 95147
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   95165 95167 95201 95207 95309 95441 95443 95449 95510 95558 95583 95720
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   95782 95875 96020 96079 96110 96417 96588 96610 96616 96667 96737 96821
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   96829 96861 97168 97225 97304 97306 97395 97470 97673 97752 97757 97826
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   97836 97860 97913 97921 97923 97938 97957 98056 98124 98154 98230 98243
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   98279 98369 98491 98809 98908 98961 99007 99106 99112 99114 99117 99145
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   99149 99270 99320 99437 99615 99675 99728 99813 99912 100163 100383
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  FALSE  FALSE
##   100498 100556 100714 100745 101088 101112 101283 101531 101577 101612
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   101741 101850 101864 101947 102123 102125 102165 102194 102278 102378
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   102407 102445 102481 102666 102684 102686 102716 102800 102903 102993
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   103042 103137 103141 103228 103235 103249 103253 103279 103335 103339
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   103372 103384 103543 103624 103655 103688 103755 103813 103883 103984
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   104074 104211 104241 104283 104312 104339 104374 104419 104590 104760
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   104841 104879 104913 104944 105037 105197 105213 105504 105755 105844
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   106002 106062 106072 106100 106204 106330 106438 106487 106489 106491
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   106540 106542 106696 106782 106916 106918 106920 107069 107406 107516
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   107769 107945 107953 108090 108188 108190 108447 108583 108709 108727
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   108729 108932 108981 109074 109249 109317 109372 109374 109487 109576
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   109578 109846 109848 109864 110102 110501 110553 110586 110591 110645
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   110730 110771 111360 111362 111443 111529 111617 111622 111680 111743
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   111759 111781 111913 111921 112171 112175 112183 112277 112290 112370
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   112399 112421 112515 112552 112556 112623 112788 112818 112852 112911
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   112921 113275 113345 113348 113378 113565 113705 113780 113829 114028
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   114074 114180 114552 114662 114707 114762 115122 115151 115210 115231
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   115534 115569 115617 115713 116136 116161 116413 116419 116797 116799
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   116823 116849 116855 116897 116939 117176 117192 117851 118248 118334
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   118468 118696 118880 118900 118924 119141 119145 120466 120637 120799
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   121113 122882 122886 122892 122900 122902 122904 122920 123947 125916
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   126006 126420 126430 127108 127152 127164 127178 127198 127204 127206
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   128360 128512 129191 129364 129514 129737 129937 130073 130522 130682
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   130960 131013 131168 131724 132046 132074 132496 132618 132796 132888
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   133419 133545 133824 134130 134170 134368 134393 134853 135133 135264
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   135518 135536 135567 135569 135887 136018 136020 136305 136562 136654
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   136864 137337 138036 138208 139644 140267 140711 140715 140751 140755
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   141688 142068 142258 142448 142488 142507 143472 143859 144620 144714
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   145150 146656 146682 147006 147037 147426 147845 148626 149354 149532
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   150548 152077 152081 152844 155611 156387 156607 156609 157296 157407
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
##   157667 158314 159093 159755 160080 160438 160590 161155 161918 163949
## 1  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
recomm_IBCF <- Recommender(test_data_mat[1:nrow(test_data_mat)],method="IBCF",
                           param=list(normalize="Z-score",method="Cosine"
                                      ,nn=5,minRating=1))
## Available parameter (with default values):
## k     =  30
## method    =  Cosine
## normalize     =  center
## normalize_sim_matrix  =  FALSE
## alpha     =  0.5
## na_as_zero    =  FALSE
## verbose   =  FALSE
comb_RRM <- as(combined_dataset, "realRatingMatrix")
movies_ratings <- comb_RRM[rowCounts(comb_RRM) > 50,colCounts(comb_RRM) > 100]

Bootstrapping

We will use bootstrapping to sample same user more than once, so that we make have more user(s) to be tested.

eval_scheme <- evaluationScheme(data = movies_ratings, method = "bootstrap", train = 0.8, given = 2, goodRating =3, k = 1)

Evaluating and Prediction

eval_recomm <- Recommender(data = getData(eval_scheme, "train"),method = "IBCF", parameter = NULL)
eval_prediction <- predict(object = eval_recomm, newdata =getData(eval_scheme, "known"), n = 10, type = "ratings")
qplot(rowCounts(eval_prediction)) + geom_histogram(binwidth = 10) + ggtitle("Distribution of movies per user")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Dimensionality Reduction

Root Mean Square Error (RMSE): This is frequently used measure of the differences between values (sample and population values) predicted by a model or an estimator and the values actually observed. i.e used to measure the standard deviation between the real and predicted values.

\(\sqrt { \sum _{ t=1 }^{ n }{ { ({ \hat { y } }_{ t }-\quad { y }_{ t }\quad ) }^{ 2 }/\quad n } }\)

Mean Sqaure Error (MSE): This being a risk fuction is used to measures the average of the squares of the errors or deviations-that is, the difference between the mean of an estimator and what is estimated.

\(MSE\quad =\quad \frac { 1 }{ n } \sum _{ i=1 }^{ n }{ { (\quad \hat { { Y }_{ i } } -\quad { Y }_{ i }\quad ) }^{ 2 } }\)

Mean Absolute Error (MAE): As the name implies, it is the mean of absolute different between estimator and what is estimated.

\(MAE\quad =\quad \frac { \sum _{ i=1 }^{ n }{ |{ y }_{ i }\quad -\quad { x }_{ i }|\quad \quad \quad } }{ n }\)

eval_pred_accuracy <- calcPredictionAccuracy(x = eval_prediction, data = getData(eval_scheme, "unknown"), byUser =TRUE)
output <- evaluate(x = eval_scheme, method = "IBCF", n =seq(10, 100, 10))
## IBCF run fold/sample [model time/prediction time]
##   1  [0.04sec/0.03sec]
kable(head(eval_pred_accuracy))
RMSE MSE MAE
2 NaN NaN NaN
3 1.5448411 2.3865340 1.2607948
4 NaN NaN NaN
8 0.7316053 0.5352463 0.5555457
12 2.5495098 6.5000000 2.5000000
13 0.9258201 0.8571429 0.5714286

COnfusion Matrix & ROC Curve.

kable(head(getConfusionMatrix(output)[1]))
TP FP FN TN precision recall TPR FPR
10 2.448718 5.307692 30.58333 67.66026 0.3157025 0.0746821 0.0746821 0.0723810
20 5.019231 10.493590 28.01282 62.47436 0.3235537 0.1627803 0.1627803 0.1422130
30 7.448718 15.711538 25.58333 57.25641 0.3214783 0.2490176 0.2490176 0.2133702
40 9.532051 20.416667 23.50000 52.55128 0.3165340 0.3109189 0.3109189 0.2776851
50 11.044872 24.038462 21.98718 48.92949 0.3118890 0.3560894 0.3560894 0.3282503
60 11.993590 25.858974 21.03846 47.10897 0.3113738 0.3841064 0.3841064 0.3547830
70 12.391026 26.423077 20.64103 46.54487 0.3119807 0.3934847 0.3934847 0.3633521
80 12.448718 26.551282 20.58333 46.41667 0.3117686 0.3944508 0.3944508 0.3650345
90 12.448718 26.551282 20.58333 46.41667 0.3117686 0.3944508 0.3944508 0.3650345
100 12.448718 26.551282 20.58333 46.41667 0.3117686 0.3944508 0.3944508 0.3650345
plot(output, annotate = TRUE, main = "ROC curve")

plot(output, "prec/rec", annotate = TRUE, main = "Precision-recall")

Conclusion:

From the analysis above, we can deduce that the recommendation system help the following:

  • Recommender system will always add company own marketing and inventory control directive to the customer’s profile to feature product that are promotionally prices, on clearance overstocked. It also enables flexibility to control what items are highlighted by the engine.

  • Recommender system also help to reduce the workload of IT department due to large data that may required to create a personal shopping experience.

  • It will make life easier for consumer of such products or services, because it will give them more time to do something else.

  • Recommendersystem will provide accurate and up to the minute report to both consumer/client and company about the site and directions.

References