Instructions

Imagine 10000 receipts sitting on your table. Each receipt represents a transaction with items that were purchased. The receipt is a representation of stuff that went into a customer’s basket - and therefore ‘Market Basket Analysis’.

That is exactly what the Groceries Data Set contains: a collection of receipts with each line representing 1 receipt and the items purchased. Each line is called a transaction and each column in a row represents an item.  The data set is attached.

Your assignment is to use R to mine the data for association rules. You should report support, confidence and lift and your top 10 rules by lift.

Extra credit: do a simple cluster analysis on the data as well.  Use whichever packages you like.

Load the Data

In this step we will use the read.tranactions() to load our “baskets” directly from our csv file, I will also plot some the most frequent items in the dataset (showing in different records/reciepts)

# Load the data from a file
groceries <- read.transactions("GroceryDataSet.csv", sep = ",", format = "basket")
summary(groceries)
## transactions as itemMatrix in sparse format with
##  9835 rows (elements/itemsets/transactions) and
##  169 columns (items) and a density of 0.02609146 
## 
## most frequent items:
##       whole milk other vegetables       rolls/buns             soda 
##             2513             1903             1809             1715 
##           yogurt          (Other) 
##             1372            34055 
## 
## element (itemset/transaction) length distribution:
## sizes
##    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16 
## 2159 1643 1299 1005  855  645  545  438  350  246  182  117   78   77   55   46 
##   17   18   19   20   21   22   23   24   26   27   28   29   32 
##   29   14   14    9   11    4    6    1    1    1    1    3    1 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   2.000   3.000   4.409   6.000  32.000 
## 
## includes extended item information - examples:
##             labels
## 1 abrasive cleaner
## 2 artif. sweetener
## 3   baby cosmetics
inspect(head(groceries,5))
##     items                      
## [1] {citrus fruit,             
##      margarine,                
##      ready soups,              
##      semi-finished bread}      
## [2] {coffee,                   
##      tropical fruit,           
##      yogurt}                   
## [3] {whole milk}               
## [4] {cream cheese,             
##      meat spreads,             
##      pip fruit,                
##      yogurt}                   
## [5] {condensed milk,           
##      long life bakery product, 
##      other vegetables,         
##      whole milk}
popular_items <- eclat(groceries, parameter = list(supp = 0.7, maxlen = 5))
## Eclat
## 
## parameter specification:
##  tidLists support minlen maxlen            target  ext
##     FALSE     0.7      1      5 frequent itemsets TRUE
## 
## algorithmic control:
##  sparse sort verbose
##       7   -2    TRUE
## 
## Absolute minimum support count: 6884
## eclat - zero frequent items
inspect(popular_items)
itemFrequencyPlot(groceries, topN = 15, type = "absolute", main = "Item Counts", horiz = TRUE)

Generating Rules

We aim to create association rules between items using the arules package. To capture all patterns, including niche ones, we will start with a support threshold of 0.001 and a confidence threshold of 0.5.

rules <- apriori(groceries, parameter = list(supp = 0.001, conf = 0.5))
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##         0.5    0.1    1 none FALSE            TRUE       5   0.001      1
##  maxlen target  ext
##      10  rules TRUE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 9 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[169 item(s), 9835 transaction(s)] done [0.00s].
## sorting and recoding items ... [157 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 4 5 6 done [0.01s].
## writing ... [5668 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].
inspect(sort(rules, by = "lift")[1:10])
##      lhs                         rhs                  support confidence    coverage     lift count
## [1]  {Instant food products,                                                                       
##       soda}                   => {hamburger meat} 0.001220132  0.6315789 0.001931876 18.99565    12
## [2]  {popcorn,                                                                                     
##       soda}                   => {salty snack}    0.001220132  0.6315789 0.001931876 16.69779    12
## [3]  {baking powder,                                                                               
##       flour}                  => {sugar}          0.001016777  0.5555556 0.001830198 16.40807    10
## [4]  {ham,                                                                                         
##       processed cheese}       => {white bread}    0.001931876  0.6333333 0.003050330 15.04549    19
## [5]  {Instant food products,                                                                       
##       whole milk}             => {hamburger meat} 0.001525165  0.5000000 0.003050330 15.03823    15
## [6]  {curd,                                                                                        
##       other vegetables,                                                                            
##       whipped/sour cream,                                                                          
##       yogurt}                 => {cream cheese}   0.001016777  0.5882353 0.001728521 14.83409    10
## [7]  {domestic eggs,                                                                               
##       processed cheese}       => {white bread}    0.001118454  0.5238095 0.002135231 12.44364    11
## [8]  {other vegetables,                                                                            
##       tropical fruit,                                                                              
##       white bread,                                                                                 
##       yogurt}                 => {butter}         0.001016777  0.6666667 0.001525165 12.03058    10
## [9]  {hamburger meat,                                                                              
##       whipped/sour cream,                                                                          
##       yogurt}                 => {butter}         0.001016777  0.6250000 0.001626843 11.27867    10
## [10] {domestic eggs,                                                                               
##       other vegetables,                                                                            
##       tropical fruit,                                                                              
##       whole milk,                                                                                  
##       yogurt}                 => {butter}         0.001016777  0.6250000 0.001626843 11.27867    10

After inspecting the top ten generated rules by lift, we observe some interesting associations. For instance, there is an 18% likelihood that a customer will buy hamburger meat if they purchase soda and quick cooking items. Using lift is critical in association analysis because it incorporates a baseline for random chance. For example, even if a customer doesn’t need hamburger meat today, it might still be appealing to buy some to keep in the freezer for later.

If we were to rely solely on the confidence statistic, we might conclude that there is a 68% chance of buying hamburger meat when soda and quick cooking items are purchased. However, this could be misleading. High confidence alone might not account for the fact that hamburger meat is a popular item purchased frequently across all transactions, which could inflate the association. This misinterpretation could lead to the misallocation of resources, such as overstocking unrelated items or missing other significant patterns.

By considering lift, we ensure that we focus on meaningful associations that exceed what would occur by random chance, providing actionable insights for inventory management and targeted promotions.

inspect(sort(rules, by = "confidence")[1:10])
##      lhs                     rhs                    support confidence    coverage     lift count
## [1]  {rice,                                                                                      
##       sugar}              => {whole milk}       0.001220132          1 0.001220132 3.913649    12
## [2]  {canned fish,                                                                               
##       hygiene articles}   => {whole milk}       0.001118454          1 0.001118454 3.913649    11
## [3]  {butter,                                                                                    
##       rice,                                                                                      
##       root vegetables}    => {whole milk}       0.001016777          1 0.001016777 3.913649    10
## [4]  {flour,                                                                                     
##       root vegetables,                                                                           
##       whipped/sour cream} => {whole milk}       0.001728521          1 0.001728521 3.913649    17
## [5]  {butter,                                                                                    
##       domestic eggs,                                                                             
##       soft cheese}        => {whole milk}       0.001016777          1 0.001016777 3.913649    10
## [6]  {citrus fruit,                                                                              
##       root vegetables,                                                                           
##       soft cheese}        => {other vegetables} 0.001016777          1 0.001016777 5.168156    10
## [7]  {butter,                                                                                    
##       hygiene articles,                                                                          
##       pip fruit}          => {whole milk}       0.001016777          1 0.001016777 3.913649    10
## [8]  {hygiene articles,                                                                          
##       root vegetables,                                                                           
##       whipped/sour cream} => {whole milk}       0.001016777          1 0.001016777 3.913649    10
## [9]  {hygiene articles,                                                                          
##       pip fruit,                                                                                 
##       root vegetables}    => {whole milk}       0.001016777          1 0.001016777 3.913649    10
## [10] {cream cheese,                                                                              
##       domestic eggs,                                                                             
##       sugar}              => {whole milk}       0.001118454          1 0.001118454 3.913649    11

As observed above, when we highlight confidence as the statistic of interest, we see a strong predictor for whole milk across a variety of baskets. This raises an important question: Is purchasing shaving cream and fruits a direct precedent to buying milk, or is milk simply a consistently popular item because it is an essential product found in the majority of baskets, regardless of the other items present?

inspect(sort(rules, by = "support")[1:10])
##      lhs                                       rhs                support   
## [1]  {other vegetables, yogurt}             => {whole milk}       0.02226741
## [2]  {tropical fruit, yogurt}               => {whole milk}       0.01514997
## [3]  {other vegetables, whipped/sour cream} => {whole milk}       0.01464159
## [4]  {root vegetables, yogurt}              => {whole milk}       0.01453991
## [5]  {other vegetables, pip fruit}          => {whole milk}       0.01352313
## [6]  {root vegetables, yogurt}              => {other vegetables} 0.01291307
## [7]  {rolls/buns, root vegetables}          => {whole milk}       0.01270971
## [8]  {domestic eggs, other vegetables}      => {whole milk}       0.01230300
## [9]  {root vegetables, tropical fruit}      => {other vegetables} 0.01230300
## [10] {rolls/buns, root vegetables}          => {other vegetables} 0.01220132
##      confidence coverage   lift     count
## [1]  0.5128806  0.04341637 2.007235 219  
## [2]  0.5173611  0.02928317 2.024770 149  
## [3]  0.5070423  0.02887646 1.984385 144  
## [4]  0.5629921  0.02582613 2.203354 143  
## [5]  0.5175097  0.02613116 2.025351 133  
## [6]  0.5000000  0.02582613 2.584078 127  
## [7]  0.5230126  0.02430097 2.046888 125  
## [8]  0.5525114  0.02226741 2.162336 121  
## [9]  0.5845411  0.02104728 3.020999 121  
## [10] 0.5020921  0.02430097 2.594890 120

When sorting our rules by the support metric, we observe that milk consistently appears as a top choice in many of the top ten rules. However, it is important to note that all of these rules have a lift value of less than 5. This indicates that the associative rule provides only a small improvement over random chance, highlighting the limited strength of these associations.

Clusters

library(mclust)
## Package 'mclust' version 6.1.1
## Type 'citation("mclust")' for citing this R package in publications.
## 
## Attaching package: 'mclust'
## The following object is masked from 'package:purrr':
## 
##     map
set.seed(545)

# converting the data to binary mattrix for clustering
groceries_matrix <- as(groceries, "matrix")
wcss <- function(data, max_clusters) {
  sse <- numeric(max_clusters)
  for (k in 1:max_clusters) {
    set.seed(123) # For reproducibility
    kmeans_model <- kmeans(data, centers = k)
    sse[k] <- kmeans_model$tot.withinss
  }
  return(sse)
}

max_k <- 10
wcss_values <- wcss(groceries_matrix, max_k)
wcss_values
##  [1] 39781.76 37685.41 36940.59 35996.74 35201.04 34632.41 34044.15 33694.81
##  [9] 33428.31 33156.20
plot(1:max_k, wcss_values, type = "b", pch = 19, frame = FALSE,
     xlab = "Number of Clusters (k)", ylab = "Total Within-Cluster Sum of Squares",
     main = "Elbow Method for Optimal k")

After converting the grocery data into a matrix, we implemented a simple k-means clustering algorithm. By iterating through k=1k = 1k=1 to k=10k = 10k=10, the elbow plot suggests that the optimal number of clusters is 3. Next, we will attempt to visualize the clusters. To do this effectively, we will first perform PCA (Principal Component Analysis) to reduce the dimensionality of the data.

pca_result <- prcomp(groceries_matrix, scale. = TRUE)


optimal_k <- 3
kmeans_result <- kmeans(groceries_matrix, centers = optimal_k)

# View the clustering result
print(kmeans_result)
## K-means clustering with 3 clusters of sizes 6046, 1993, 1796
## 
## Cluster means:
##   abrasive cleaner artif. sweetener baby cosmetics    baby food         bags
## 1      0.002480979      0.002811776   0.0003307972 0.0000000000 0.0004961958
## 2      0.007526342      0.004014049   0.0010035123 0.0000000000 0.0000000000
## 3      0.002783964      0.003897550   0.0011135857 0.0005567929 0.0005567929
##   baking powder bathroom cleaner       beef    berries  beverages bottled beer
## 1    0.01141250      0.003142574 0.03886867 0.02844856 0.02381740   0.08402249
## 2    0.03662820      0.001003512 0.07827396 0.04616157 0.03060712   0.07676869
## 3    0.01781737      0.003340757 0.06959911 0.03507795 0.02839644   0.07293987
##   bottled water      brandy brown bread     butter butter milk   cake bar
## 1    0.09741978 0.004300364  0.05176977 0.03274892  0.01935164 0.01008932
## 2    0.13146011 0.002007025  0.10185650 0.11189162  0.04264927 0.01956849
## 3    0.13140312 0.006124722  0.06792873 0.06904232  0.04064588 0.01670379
##       candles      candy canned beer canned fish canned fruit canned vegetables
## 1 0.008931525 0.02762157  0.09708898  0.01091631  0.002480979       0.009096924
## 2 0.011038635 0.02960361  0.03311591  0.02257903  0.005519318       0.015052684
## 3 0.006681514 0.03786192  0.06180401  0.02060134  0.003340757       0.011692650
##     cat food     cereals chewing gum    chicken  chocolate
## 1 0.01902084 0.002646378  0.02084022 0.03307972 0.04134965
## 2 0.03813347 0.014550928  0.02207727 0.06522830 0.06171601
## 3 0.02115813 0.006124722  0.02060134 0.05122494 0.06403118
##   chocolate marshmallow citrus fruit     cleaner cling film/bags cocoa drinks
## 1           0.007277539   0.06814423 0.003804168      0.01058551 0.0009923917
## 2           0.012042148   0.12092323 0.010035123      0.01455093 0.0055193176
## 3           0.011692650   0.08964365 0.003897550      0.01057906 0.0027839644
##       coffee condensed milk cooking chocolate    cookware        cream
## 1 0.05325835    0.010254714       0.001488587 0.003142574 0.0013231889
## 2 0.07225289    0.009031611       0.005017561 0.001003512 0.0020070246
## 3 0.05846325    0.011692650       0.003340757 0.003340757 0.0005567929
##   cream cheese       curd curd cheese decalcifier dental care    dessert
## 1   0.02662918 0.03539530 0.003307972 0.001323189 0.004631161 0.03010255
## 2   0.06773708 0.10837933 0.007024586 0.002508781 0.007526342 0.05820371
## 3   0.05233853 0.05233853 0.008908686 0.001113586 0.007795100 0.03730512
##    detergent dish cleaner     dishes    dog food domestic eggs
## 1 0.01455508  0.009758518 0.01687066 0.007112140    0.03870327
## 2 0.03612644  0.011540391 0.01956849 0.014049172    0.11991972
## 3 0.01614699  0.011692650 0.01781737 0.007238307    0.08407572
##   female sanitary products finished products        fish      flour
## 1              0.004631161       0.006781343 0.002977175 0.01091631
## 2              0.008028098       0.007024586 0.004014049 0.03462117
## 3              0.008908686       0.005011136 0.001670379 0.02004454
##   flower (seeds) flower soil/fertilizer frankfurter frozen chicken
## 1    0.008435329           0.0026463778  0.04019186   0.0006615944
## 2    0.016557953           0.0005017561  0.07576518   0.0005017561
## 3    0.010022272           0.0011135857  0.10356347   0.0005567929
##   frozen dessert frozen fish frozen fruits frozen meals frozen potato products
## 1    0.008435329 0.008600728   0.001157790   0.02563678            0.006450546
## 2    0.013547416 0.019568490   0.001505268   0.03863522            0.013045660
## 3    0.015590200 0.013363029   0.001113586   0.02616927            0.010022272
##   frozen vegetables fruit/vegetable juice     grapes   hair spray        ham
## 1        0.03572610            0.05788951 0.01835925 0.0009923917 0.01753225
## 2        0.08028098            0.11088811 0.03110888 0.0015052684 0.04214752
## 3        0.05400891            0.07795100 0.02616927 0.0011135857 0.03674833
##   hamburger meat hard cheese      herbs        honey house keeping products
## 1     0.02232881  0.01769765 0.01257029 0.0004961958            0.005954350
## 2     0.05619669  0.03913698 0.02910186 0.0040140492            0.015052684
## 3     0.04454343  0.03118040 0.01447661 0.0022271715            0.008908686
##   hygiene articles  ice cream instant coffee Instant food products         jam
## 1       0.02795237 0.02695997    0.006119749            0.00595435 0.003307972
## 2       0.05067737 0.02508781    0.009533367            0.01053688 0.010536879
## 3       0.03006682 0.01837416    0.009465479            0.01224944 0.006681514
##       ketchup kitchen towels kitchen utensil light bulbs      liqueur
## 1 0.004134965    0.004300364    0.0001653986 0.004796560 0.0008269931
## 2 0.006522830    0.010536879    0.0010035123 0.002508781 0.0005017561
## 3 0.002227171    0.006681514    0.0005567929 0.003897550 0.0016703786
##        liquor liquor (appetizer)  liver loaf long life bakery product
## 1 0.015382071        0.009758518 0.003638769               0.03126034
## 2 0.002508781        0.005519318 0.007526342               0.05218264
## 3 0.006124722        0.004454343 0.007238307               0.04175947
##   make up remover male cosmetics  margarine  mayonnaise       meat meat spreads
## 1    0.0009923917    0.005127357 0.04366523 0.006285147 0.01968243  0.002811776
## 2    0.0000000000    0.003512293 0.08580030 0.013547416 0.03411942  0.006522830
## 3    0.0011135857    0.003897550 0.07850780 0.013919822 0.03730512  0.006681514
##   misc. beverages     mustard    napkins newspapers   nut snack nuts/prunes
## 1      0.02844856 0.006285147 0.04217665 0.06516705 0.003638769 0.002480979
## 2      0.03060712 0.019568490 0.07325640 0.09884596 0.001505268 0.004014049
## 3      0.02561247 0.022828508 0.06347439 0.10801782 0.003340757 0.005567929
##          oil     onions organic products organic sausage other vegetables
## 1 0.02348660 0.02431360      0.001157790     0.001653986        0.1491895
## 2 0.04515805 0.04716508      0.002508781     0.003512293        0.2980432
## 3 0.02449889 0.03563474      0.002227171     0.002783964        0.2266147
##   packaged fruit/vegetables      pasta     pastry    pet care  photo/film
## 1                0.01207410 0.01273569 0.06913662 0.010420112 0.010254714
## 2                0.01505268 0.02408430 0.12744606 0.010536879 0.009031611
## 3                0.01391982 0.01280624 0.11302895 0.005011136 0.006124722
##   pickled vegetables  pip fruit     popcorn       pork pot plants
## 1         0.01339729 0.06003970 0.005954350 0.04862719 0.01488587
## 2         0.02659308 0.12393377 0.012042148 0.08278976 0.02609132
## 3         0.02338530 0.07461024 0.006124722 0.06013363 0.01559020
##   potato products preservation products processed cheese    prosecco
## 1     0.001819385          0.0001653986       0.01108171 0.002150182
## 2     0.005519318          0.0005017561       0.02558956 0.001003512
## 3     0.003340757          0.0000000000       0.02505568 0.002783964
##   pudding powder  ready soups red/blush wine        rice roll products
## 1    0.001488587 0.0006615944     0.01951704 0.003473371   0.007773735
## 2    0.006021074 0.0025087807     0.01605620 0.021575514   0.017561465
## 3    0.001113586 0.0050111359     0.02171492 0.006124722   0.010579065
##   rolls/buns root vegetables rubbing alcohol         rum salad dressing
## 1 0.00000000      0.07657956    0.0004961958 0.003638769   0.0009923917
## 2 0.00652283      0.19167085    0.0030105369 0.006522830   0.0005017561
## 3 1.00000000      0.12639198    0.0005567929 0.005011136   0.0005567929
##          salt salty snack      sauces    sausage seasonal products
## 1 0.009096924  0.03738009 0.004631161 0.06814423        0.01389348
## 2 0.015554441  0.04917210 0.009031611 0.10687406        0.01455093
## 3 0.011135857  0.02672606 0.004454343 0.16648107        0.01503341
##   semi-finished bread shopping bags   skin care sliced cheese snack products
## 1          0.01389348    0.09659279 0.002315581    0.01422428    0.002150182
## 2          0.02910186    0.09683894 0.004014049    0.04164576    0.003512293
## 3          0.01781737    0.10690423 0.007238307    0.04008909    0.005567929
##          soap      soda soft cheese    softener sound storage medium
## 1 0.002315581 0.1696990 0.009262322 0.004961958         0.0001653986
## 2 0.003010537 0.1565479 0.030607125 0.007526342         0.0000000000
## 3 0.003340757 0.2099109 0.028396437 0.005011136         0.0000000000
##         soups sparkling wine specialty bar specialty cheese specialty chocolate
## 1 0.005458154    0.006450546    0.02695997      0.006450546          0.03059874
## 2 0.011038635    0.005017561    0.02558956      0.017561465          0.02960361
## 3 0.006681514    0.003340757    0.03062361      0.005567929          0.03062361
##   specialty fat specialty vegetables      spices spread cheese      sugar
## 1   0.003307972         0.0021501819 0.004796560   0.007939133 0.02447899
## 2   0.005519318         0.0015052684 0.005519318   0.010536879 0.05970898
## 3   0.002783964         0.0005567929 0.006124722   0.022828508 0.03674833
##   sweet spreads       syrup         tea     tidbits toilet cleaner
## 1   0.007442937 0.002977175 0.002315581 0.001323189   0.0008269931
## 2   0.014049172 0.004014049 0.006522830 0.001505268   0.0010035123
## 3   0.008908686 0.003340757 0.006124722 0.006681514   0.0000000000
##   tropical fruit      turkey   UHT-milk     vinegar    waffles
## 1     0.07707575 0.005623553 0.03853788 0.004796560 0.03390672
## 2     0.16708480 0.015052684 0.01655795 0.010035123 0.04365278
## 3     0.12973274 0.008908686 0.03507795 0.008351893 0.04788419
##   whipped/sour cream       whisky white bread white wine whole milk    yogurt
## 1         0.05143897 0.0008269931  0.03456831 0.02315581  0.0000000 0.1017201
## 2         0.12995484 0.0005017561  0.07175113 0.01053688  0.9879579 0.2147516
## 3         0.07516704 0.0011135857  0.03452116 0.01447661  0.3028953 0.1831849
##      zwieback
## 1 0.007112140
## 2 0.006021074
## 3 0.007238307
## 
## Clustering vector:
##    [1] 1 1 2 1 2 2 3 3 1 2 1 2 1 3 1 1 1 1 1 1 1 1 2 1 3 1 1 3 1 1 1 3 2 2 1 1 1
##   [38] 1 2 1 3 2 1 1 3 1 1 3 1 3 3 1 2 1 2 2 1 3 3 3 2 1 2 3 3 2 1 1 2 3 1 2 2 2
##   [75] 1 3 2 1 1 1 1 3 1 1 1 3 1 1 1 1 1 1 1 1 1 1 3 1 2 1 1 3 3 2 1 3 1 3 1 1 3
##  [112] 1 3 1 1 2 3 2 2 1 1 1 1 1 1 2 1 1 3 1 1 2 1 1 1 1 1 3 1 1 3 1 2 2 1 3 3 1
##  [149] 3 1 2 1 3 1 2 1 1 3 2 1 3 1 1 1 1 1 2 2 1 1 2 1 1 1 1 2 2 1 1 1 3 1 1 1 1
##  [186] 2 3 1 2 1 1 1 1 3 1 2 1 1 1 1 1 1 3 1 2 3 2 1 1 3 1 1 1 2 3 1 1 1 1 1 1 1
##  [223] 3 1 1 3 1 1 3 1 1 3 2 3 3 3 1 3 2 3 1 2 3 1 2 3 3 1 3 2 3 3 1 1 1 1 1 1 3
##  [260] 2 1 1 1 1 1 1 3 2 1 1 2 3 1 2 2 3 3 3 3 1 1 2 1 1 3 2 1 1 1 3 1 2 2 1 2 1
##  [297] 1 1 1 1 3 3 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 3 2 1 1 1 1 3 3 1 3 1 1
##  [334] 1 1 1 1 1 1 2 2 3 1 1 3 1 1 2 2 2 1 1 1 1 1 2 1 1 3 2 2 2 1 1 2 1 2 3 1 1
##  [371] 1 1 1 1 3 3 2 3 1 1 1 1 1 1 1 1 1 3 1 2 1 1 3 1 1 2 1 3 2 2 1 1 3 3 1 1 1
##  [408] 1 1 1 1 3 1 2 3 1 1 1 3 1 3 1 2 3 1 1 1 1 1 2 1 1 3 1 1 1 1 1 1 1 3 3 1 1
##  [445] 1 3 3 1 1 3 2 1 2 3 1 2 1 3 1 1 1 1 1 2 3 3 2 1 3 1 1 1 3 1 1 2 1 1 2 1 1
##  [482] 2 1 3 1 1 1 1 1 3 1 1 1 2 3 1 1 1 1 1 1 2 1 1 3 1 1 2 1 1 1 1 1 1 1 2 1 2
##  [519] 1 1 1 1 1 3 1 1 1 2 1 3 1 1 1 2 1 1 1 2 2 1 1 3 3 1 1 2 2 2 2 1 1 1 1 1 3
##  [556] 1 1 1 1 3 1 2 2 2 3 1 1 3 2 1 1 1 2 1 1 1 1 3 1 2 1 1 3 3 1 3 2 2 1 1 1 1
##  [593] 1 3 1 2 2 3 1 3 1 1 1 2 2 1 1 2 3 1 1 3 1 3 2 2 1 3 1 2 1 3 1 3 2 3 1 3 2
##  [630] 2 3 3 2 1 1 1 1 2 1 1 3 3 3 3 1 1 3 1 1 1 1 2 1 1 1 1 1 3 2 3 3 1 1 1 1 3
##  [667] 3 2 3 1 1 1 3 1 1 2 1 2 3 2 3 3 1 1 2 3 1 3 1 1 3 1 1 3 2 1 1 3 3 1 2 1 1
##  [704] 3 2 3 2 2 1 2 1 1 3 1 1 1 3 3 3 3 3 1 3 1 1 3 3 3 3 1 2 3 2 1 3 1 1 1 1 2
##  [741] 2 3 1 1 1 1 3 1 1 3 1 1 3 1 1 1 1 1 2 3 3 2 1 1 1 1 3 2 2 3 1 3 1 1 3 1 2
##  [778] 2 1 1 1 3 2 3 2 1 3 3 1 1 1 3 2 1 3 3 3 3 1 1 2 1 1 3 1 1 1 1 2 2 2 2 1 1
##  [815] 1 1 2 2 1 3 2 2 3 1 3 2 1 3 1 2 2 1 3 1 1 2 1 1 1 2 3 1 2 2 3 2 1 1 2 2 2
##  [852] 1 3 1 3 2 1 1 1 3 2 3 1 1 3 1 1 1 2 3 3 2 3 2 2 1 1 1 1 1 1 1 1 1 1 3 1 3
##  [889] 1 1 1 1 3 2 1 2 2 1 3 3 3 1 2 1 2 1 1 2 1 2 1 1 1 1 1 1 1 1 3 3 3 2 2 3 1
##  [926] 1 1 2 1 1 2 2 3 1 1 1 3 3 1 1 1 1 2 1 1 2 3 1 2 1 1 1 2 3 1 1 1 2 3 1 1 1
##  [963] 2 1 1 1 2 1 1 1 3 1 1 1 2 1 1 1 1 2 2 1 3 1 2 2 1 1 1 2 2 1 1 1 1 1 2 1 3
## [1000] 1 1 1 1 3 1 3 1 1 2 2 1 3 2 2 1 1 2 1 2 2 1 1 2 1 1 1 1 1 1 1 3 1 1 1 1 2
## [1037] 1 1 1 2 1 1 1 1 1 1 2 1 1 2 3 2 2 1 1 3 2 1 3 1 1 1 2 2 1 1 2 3 1 1 1 1 3
## [1074] 2 3 1 2 1 1 1 1 2 1 2 2 3 1 1 1 3 1 3 2 1 1 1 1 1 1 1 1 2 3 1 2 1 1 1 1 3
## [1111] 3 1 3 1 2 1 1 1 1 2 1 2 1 1 3 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1
## [1148] 2 2 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1
## [1185] 3 3 1 3 2 3 1 1 1 3 3 3 2 2 2 1 1 3 1 3 1 2 2 1 2 1 2 3 3 1 1 2 2 3 3 2 1
## [1222] 1 1 1 1 1 3 2 2 2 1 1 1 1 3 2 2 3 1 1 1 1 1 2 2 1 3 2 1 1 3 1 2 1 2 2 1 1
## [1259] 1 3 2 1 2 1 1 1 2 3 1 2 1 3 3 1 1 1 1 1 3 3 1 2 1 2 2 1 3 1 1 2 3 1 3 3 1
## [1296] 1 3 1 1 1 2 1 3 1 2 1 2 2 3 3 3 1 2 1 1 1 1 1 2 1 1 1 3 2 2 1 1 1 1 1 2 1
## [1333] 3 1 2 1 1 2 1 1 1 1 1 2 3 2 2 2 1 1 1 3 1 2 1 1 1 1 2 1 2 1 1 2 1 1 1 1 1
## [1370] 1 1 1 1 2 3 1 1 1 1 1 1 2 1 1 2 2 1 1 3 1 3 2 2 1 1 1 1 1 1 2 1 3 1 1 1 3
## [1407] 2 1 1 2 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 1 3 1 2 3 1 2 1 2 1 1 3 1 1 1 2
## [1444] 2 1 2 1 1 1 1 1 1 1 1 1 1 3 3 3 2 3 1 1 1 1 3 1 1 3 3 1 2 1 2 1 1 2 1 2 1
## [1481] 3 1 3 1 3 1 3 3 1 1 1 1 3 1 3 3 1 1 1 3 2 1 1 1 3 1 1 3 2 3 3 1 3 3 2 1 3
## [1518] 1 2 1 1 1 2 1 3 1 1 3 3 1 1 1 1 1 2 2 3 3 1 1 3 1 2 1 1 1 1 1 2 1 2 2 1 1
## [1555] 1 1 1 3 1 1 1 2 3 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 3 1 1 1 1 1 1 1 3 1 3 1
## [1592] 1 1 3 1 1 1 1 1 1 3 1 3 1 3 1 2 3 1 3 3 1 3 1 1 3 2 1 3 3 1 1 1 3 3 1 1 1
## [1629] 2 1 1 1 3 1 1 1 1 1 2 1 3 1 1 1 1 1 1 3 1 2 1 2 3 3 1 1 1 1 2 3 2 1 3 2 2
## [1666] 3 2 3 3 1 2 3 1 1 1 1 1 2 1 3 3 2 3 1 1 3 3 2 3 3 1 1 3 3 1 3 3 1 3 1 1 1
## [1703] 1 1 2 3 1 3 1 2 2 1 2 1 1 1 2 3 3 1 2 2 3 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 3
## [1740] 2 1 1 1 1 3 1 3 1 1 1 2 1 1 2 1 1 1 1 1 3 1 1 2 1 3 2 3 1 1 1 1 1 2 3 1 1
## [1777] 1 3 1 1 2 1 1 1 1 2 2 1 1 3 2 1 1 2 2 1 2 2 1 1 1 1 3 1 1 3 1 1 3 1 1 1 1
## [1814] 3 3 1 1 1 2 1 3 1 1 3 3 2 2 1 1 2 3 1 1 1 1 2 1 1 1 1 2 1 1 3 1 2 2 1 1 2
## [1851] 1 1 2 2 1 3 2 1 1 1 1 1 1 1 1 3 3 3 3 1 2 1 2 2 1 3 3 3 1 1 3 1 1 1 1 3 2
## [1888] 1 1 1 1 3 1 1 1 3 1 3 2 1 1 1 3 2 3 2 1 1 1 1 1 1 2 2 1 3 1 2 2 2 2 3 1 1
## [1925] 1 1 3 3 1 1 1 1 2 3 1 2 3 1 2 1 2 2 1 2 1 1 1 2 2 2 1 3 2 3 1 1 1 1 1 1 1
## [1962] 1 1 1 1 2 1 1 2 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 2 1 2 1
## [1999] 1 1 3 1 1 1 2 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1
## [2036] 3 1 1 1 2 2 1 2 1 1 1 2 2 1 1 1 1 1 1 2 2 1 1 1 1 2 1 3 2 1 1 1 2 1 1 2 2
## [2073] 1 1 1 1 2 1 1 1 2 1 2 1 1 2 1 2 2 2 3 1 1 2 1 2 1 3 3 2 2 1 3 3 1 2 3 2 1
## [2110] 3 1 1 3 1 1 1 3 2 3 3 2 2 1 3 1 1 3 1 1 1 3 3 2 3 3 3 1 1 3 1 1 1 1 2 1 1
## [2147] 1 2 2 1 1 3 1 1 1 1 2 3 1 1 1 1 1 1 1 3 1 3 1 1 1 2 2 3 1 1 1 1 1 1 1 1 1
## [2184] 3 3 3 1 1 2 1 1 1 1 1 3 3 3 1 2 3 1 3 1 1 1 1 2 1 2 3 1 1 2 3 1 2 3 1 1 1
## [2221] 1 1 2 2 1 2 2 2 1 1 2 1 1 2 1 1 1 1 1 1 2 1 1 3 1 2 1 1 1 1 1 1 2 1 3 2 2
## [2258] 1 2 1 1 3 1 2 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 2 1 3 1 1 1 1 1 1 1 2 1 1 1 3
## [2295] 1 1 1 3 1 2 2 1 2 1 1 3 2 2 1 2 1 1 2 1 3 2 3 1 1 1 1 1 1 3 1 1 1 3 2 2 2
## [2332] 1 3 1 3 2 3 3 3 1 1 3 1 3 2 3 1 3 2 3 1 1 1 1 1 1 1 3 1 1 1 3 1 1 2 2 3 1
## [2369] 1 3 2 2 3 1 3 1 1 3 3 3 3 1 1 1 1 2 1 3 3 2 2 1 1 2 1 3 3 3 1 1 3 2 3 1 1
## [2406] 1 1 1 1 2 3 2 1 3 1 1 2 1 1 1 3 1 1 1 1 1 1 1 3 3 2 1 2 1 1 2 3 1 3 1 1 1
## [2443] 2 1 2 1 1 1 1 2 1 1 2 1 2 2 1 1 1 1 1 2 3 1 1 3 2 3 1 2 1 1 1 2 1 3 1 2 2
## [2480] 2 1 1 1 1 1 1 2 1 3 2 1 1 1 3 1 1 1 1 1 1 1 3 1 1 2 1 1 2 1 3 1 3 1 3 1 1
## [2517] 3 1 3 1 3 2 1 1 1 3 3 3 1 3 3 1 2 1 1 3 1 1 1 2 1 3 2 1 2 3 1 3 1 1 2 1 1
## [2554] 3 2 2 1 1 1 3 2 1 3 1 1 2 1 2 1 1 1 3 1 2 1 1 2 2 3 1 3 1 2 1 1 1 1 2 3 2
## [2591] 1 1 1 1 2 1 3 1 1 3 1 1 1 3 1 1 3 3 2 1 2 1 3 1 3 1 3 1 3 2 1 3 1 3 2 3 1
## [2628] 3 1 3 1 2 2 1 2 2 1 2 1 1 3 2 1 1 2 3 3 3 3 3 1 2 1 1 1 1 1 3 1 3 1 2 3 3
## [2665] 3 2 3 2 1 1 2 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 3 1 1 1 1 1 3 3 3 3 1 3 3 3 1
## [2702] 1 3 1 2 1 1 1 1 3 3 1 1 3 2 2 2 3 1 3 1 1 2 2 1 2 3 1 3 1 3 3 1 1 1 3 1 1
## [2739] 2 1 2 2 1 3 2 1 1 1 3 2 3 1 2 1 1 3 1 3 3 1 3 2 3 1 1 1 1 1 3 1 1 1 2 1 1
## [2776] 1 1 1 2 1 3 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1
## [2813] 1 1 3 1 1 1 1 2 1 1 1 3 1 1 3 1 1 3 2 1 1 3 1 2 2 1 2 1 1 1 3 1 1 3 1 3 3
## [2850] 1 3 1 1 1 1 1 1 1 1 1 1 1 1 2 3 2 1 1 3 1 1 1 1 3 2 3 1 1 3 1 3 2 2 1 3 2
## [2887] 2 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 2 2 1 1 1 1 1 1 1 2 1 1 1 1 1
## [2924] 1 1 3 1 1 1 1 2 1 1 1 1 1 1 2 2 1 1 3 1 2 1 1 3 2 1 1 2 1 3 3 2 1 2 1 1 1
## [2961] 1 3 2 1 3 1 1 2 2 1 2 2 3 2 3 1 1 1 1 1 1 1 3 1 3 1 1 2 1 1 1 1 1 1 1 2 2
## [2998] 1 3 2 1 1 2 1 3 2 1 1 1 2 2 1 1 1 1 3 1 3 3 1 2 2 1 1 1 1 1 1 1 1 2 3 1 1
## [3035] 1 1 3 1 2 1 1 2 1 2 1 2 1 1 2 3 1 2 2 1 2 1 1 1 3 1 1 1 1 2 1 3 2 1 1 2 1
## [3072] 2 1 2 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1
## [3109] 1 1 1 1 1 3 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 3
## [3146] 2 1 3 2 2 3 1 1 3 1 1 3 1 2 3 1 2 1 1 1 1 1 2 2 1 1 1 1 2 3 2 1 2 2 1 1 1
## [3183] 2 1 1 2 3 1 1 3 1 1 2 3 1 3 2 2 1 1 1 1 3 3 1 1 3 3 2 1 1 1 1 1 1 1 2 1 1
## [3220] 1 3 2 3 3 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 2 2 2 2 1 2 1 1 1 1 1 1 1 1 1 3
## [3257] 2 3 1 2 2 3 2 1 1 1 1 1 1 1 3 3 1 1 1 1 1 1 1 1 1 2 2 1 2 1 1 1 2 1 1 1 1
## [3294] 1 3 1 1 1 1 2 2 1 2 1 1 1 1 2 1 1 3 1 1 1 1 3 1 1 2 1 1 1 1 1 1 1 1 1 3 2
## [3331] 3 2 1 1 2 1 3 1 3 2 1 1 3 1 1 1 1 1 1 1 1 1 1 1 2 3 1 1 1 1 1 1 1 2 1 1 1
## [3368] 1 1 1 1 2 1 1 2 1 1 1 1 1 1 3 1 3 1 1 3 1 1 3 2 2 1 1 1 1 1 1 1 1 3 3 3 2
## [3405] 2 2 1 1 1 2 3 3 1 3 2 3 1 3 1 1 1 2 1 3 1 1 1 1 2 1 1 3 1 3 2 1 2 3 3 2 1
## [3442] 1 2 1 1 1 1 3 2 1 1 1 1 2 1 3 1 1 1 1 1 1 1 1 1 3 1 2 2 3 1 1 1 1 2 2 1 1
## [3479] 1 1 1 1 1 1 1 1 2 1 1 2 2 1 1 1 3 2 1 1 1 1 2 1 1 1 1 2 1 3 2 1 1 1 1 1 1
## [3516] 1 1 1 2 1 1 1 1 1 1 1 2 1 1 3 1 2 3 1 3 1 1 1 1 1 2 1 1 2 3 2 2 2 1 1 2 1
## [3553] 1 1 1 2 2 2 1 3 3 2 1 1 1 2 1 2 1 3 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 2 1 1 1
## [3590] 2 1 1 2 1 1 2 3 1 1 1 2 1 1 1 1 1 1 1 1 1 2 3 1 2 3 1 1 1 3 1 1 3 1 1 3 1
## [3627] 1 1 3 3 2 3 1 2 1 3 1 1 1 2 2 2 3 2 3 1 1 1 1 1 1 3 1 1 3 3 1 3 1 3 3 3 1
## [3664] 3 3 3 1 1 2 3 3 2 1 2 1 3 3 1 1 1 3 3 1 1 2 1 2 1 3 3 1 3 2 2 1 1 1 1 1 1
## [3701] 1 1 1 1 1 2 1 3 3 2 3 1 1 1 1 2 1 1 1 1 1 1 1 1 1 3 2 1 1 2 3 1 1 1 2 1 1
## [3738] 3 2 1 2 1 1 3 1 1 1 3 1 3 2 1 3 1 2 1 1 1 3 1 2 1 3 1 1 1 1 3 3 1 1 1 3 1
## [3775] 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 2 1 1 1 1 3 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 2
## [3812] 1 1 1 1 1 1 1 1 1 1 3 3 1 3 3 1 1 3 1 1 3 1 2 3 3 1 3 2 2 1 1 1 1 2 1 1 1
## [3849] 2 2 1 1 1 1 3 2 1 3 1 1 3 1 3 3 3 1 1 1 1 1 1 1 1 1 1 3 3 2 1 3 1 2 1 2 3
## [3886] 1 2 2 3 1 2 3 1 1 2 3 1 1 2 1 1 3 3 2 1 3 1 1 1 1 1 2 1 3 2 2 1 2 1 1 1 1
## [3923] 1 2 1 3 1 3 1 1 1 1 1 2 3 3 1 2 1 2 1 1 1 1 1 1 1 3 3 2 3 1 3 2 2 1 1 1 1
## [3960] 1 1 1 3 3 1 1 3 1 1 3 3 2 2 1 1 1 1 1 2 1 1 3 3 2 3 3 1 1 3 1 1 3 1 3 1 3
## [3997] 2 1 1 1 3 1 3 1 2 1 1 3 1 2 2 2 1 2 1 2 2 1 1 1 1 1 3 1 3 3 1 1 2 1 1 1 3
## [4034] 2 1 2 2 3 3 3 1 1 3 1 1 1 2 2 1 2 1 2 2 3 1 3 1 2 1 2 2 1 1 1 1 1 1 3 3 1
## [4071] 3 2 2 1 3 3 3 1 2 1 1 1 1 3 1 1 1 1 3 2 2 1 1 1 1 2 3 1 2 1 2 2 2 2 2 1 3
## [4108] 1 1 1 1 2 2 1 1 3 1 1 1 2 3 3 1 2 1 3 2 2 1 2 1 2 2 1 1 1 2 1 1 2 3 1 1 1
## [4145] 2 1 1 1 1 3 3 1 1 1 3 3 3 1 2 1 2 1 1 3 2 1 2 3 1 1 1 1 1 2 2 1 3 1 1 2 1
## [4182] 1 3 2 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 3 1 1 2 1 1 1 1 1 3 1 1 2 1 1 2 1
## [4219] 2 1 3 1 3 1 1 2 2 1 1 3 2 2 1 2 2 2 1 2 1 1 1 1 1 1 2 1 3 2 1 1 1 2 3 1 1
## [4256] 2 2 1 1 1 2 1 1 1 3 1 1 1 1 2 1 1 1 3 2 1 3 1 1 2 1 1 1 1 1 1 2 2 1 2 2 1
## [4293] 1 2 1 1 2 1 1 1 2 1 2 3 2 1 2 1 1 1 2 2 3 1 2 1 1 2 3 1 2 1 3 1 3 1 3 1 2
## [4330] 3 1 2 2 1 1 2 2 2 1 2 1 1 1 1 3 2 3 1 2 1 1 1 1 2 3 1 1 1 1 1 3 1 1 1 1 3
## [4367] 3 2 2 1 3 1 3 2 3 1 1 2 2 1 2 3 3 1 1 1 1 3 3 3 3 1 3 1 3 3 3 3 1 2 3 1 1
## [4404] 1 3 3 3 3 1 2 1 3 1 1 2 2 2 1 2 3 1 1 2 1 1 3 3 1 2 1 2 2 2 1 1 3 1 1 1 2
## [4441] 1 3 1 1 1 1 1 1 3 1 3 1 1 3 2 1 2 1 3 2 2 1 3 1 1 1 1 2 1 1 1 2 1 1 1 2 3
## [4478] 1 2 1 1 1 2 3 3 1 2 1 1 1 1 3 1 2 1 1 1 1 2 2 1 1 1 1 3 3 1 1 1 1 2 1 2 1
## [4515] 3 3 2 1 3 1 1 3 2 1 1 2 1 1 1 1 2 1 1 1 1 1 2 1 2 2 1 3 2 1 1 1 1 1 2 3 2
## [4552] 1 1 1 2 2 1 3 1 1 1 1 1 1 2 1 1 1 3 1 2 1 3 1 2 1 2 1 2 3 1 1 1 1 1 2 1 2
## [4589] 1 1 1 1 2 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 2 2 1 2 3 3 1 1 1 3 2 1 1
## [4626] 3 1 1 3 3 1 3 1 1 3 2 1 1 2 3 3 1 3 3 1 1 2 3 1 1 1 2 3 3 1 2 1 1 3 3 1 1
## [4663] 1 2 3 2 1 1 1 1 1 1 3 3 3 1 1 2 1 1 3 2 1 1 1 3 3 1 3 1 3 1 2 3 1 2 1 1 1
## [4700] 2 1 1 3 2 1 2 3 1 1 1 1 1 3 3 1 2 1 2 3 1 1 2 1 1 1 2 1 1 3 1 2 1 1 3 3 1
## [4737] 3 1 2 2 3 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 3 1 2 2 3 1 1 1 1 1 2 3 1 1 1 1 1
## [4774] 2 1 1 1 3 1 3 2 3 1 2 1 1 2 3 1 3 1 1 1 1 3 1 3 1 1 3 2 1 1 1 3 1 3 1 1 1
## [4811] 1 1 3 1 1 2 1 1 1 1 2 1 1 1 1 1 1 3 2 3 1 1 1 2 1 1 2 1 3 1 2 3 3 1 1 1 1
## [4848] 2 3 1 1 1 3 1 3 2 1 1 1 1 1 1 3 1 1 1 3 1 3 1 1 2 3 3 1 3 1 1 1 1 1 1 1 1
## [4885] 2 1 1 2 1 1 2 1 1 1 1 1 2 1 2 1 3 1 1 2 1 1 1 1 1 1 1 1 2 1 2 2 3 1 1 1 1
## [4922] 1 2 1 3 1 1 1 1 1 1 1 1 2 1 3 1 1 1 2 2 1 1 2 1 1 1 3 1 2 2 1 1 1 3 1 2 1
## [4959] 2 3 1 1 3 3 1 1 1 1 1 3 1 1 3 1 1 3 3 1 3 1 1 2 1 1 1 1 1 1 1 1 3 2 3 1 1
## [4996] 3 1 1 1 1 1 2 2 3 1 3 3 1 2 1 3 2 2 1 1 3 1 1 1 1 1 1 1 1 2 1 1 3 2 1 2 1
## [5033] 1 3 1 1 3 1 1 1 1 1 3 1 3 1 1 2 2 1 2 1 1 3 1 1 1 1 1 1 2 1 2 1 1 2 2 1 2
## [5070] 1 3 2 3 2 1 1 1 3 1 1 2 1 2 1 1 1 1 2 1 1 1 1 1 1 3 3 1 2 3 1 2 1 2 1 1 1
## [5107] 2 1 2 1 3 1 1 1 2 3 1 1 3 1 1 1 1 3 1 1 1 2 1 2 3 1 1 2 1 1 1 1 1 1 1 1 1
## [5144] 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 2 1 1 2 1 2 2 1 1 1 2 1 3 1 1 1 2 1 1 2 1 3
## [5181] 1 1 1 1 3 1 1 1 3 1 1 2 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 2 1 3 1 3 3 1
## [5218] 1 3 1 3 1 1 3 1 2 1 1 1 1 1 1 1 1 1 1 1 1 3 1 2 2 3 2 1 1 1 1 1 1 1 3 1 1
## [5255] 1 1 2 2 1 1 1 2 1 1 1 1 1 1 2 2 3 1 1 2 1 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1
## [5292] 2 1 2 1 2 2 2 1 3 1 1 1 1 1 2 3 1 2 1 2 2 2 3 1 2 1 1 1 3 1 2 2 1 3 1 3 1
## [5329] 3 2 2 1 1 1 1 1 1 1 2 3 1 3 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 2 2
## [5366] 2 1 1 3 1 1 1 1 2 2 1 1 1 3 3 3 3 1 2 2 3 1 3 1 1 1 1 1 1 1 1 2 2 1 1 1 2
## [5403] 1 3 1 3 3 3 1 3 1 1 1 2 1 1 1 2 2 1 1 1 2 1 1 1 1 1 1 2 1 1 1 2 2 2 1 1 3
## [5440] 1 3 3 3 2 3 3 2 1 2 1 2 3 1 3 1 1 1 3 1 2 1 1 1 1 1 1 2 3 1 3 3 3 1 3 1 3
## [5477] 2 3 3 1 1 1 3 1 1 2 1 1 2 1 3 2 1 1 1 1 3 1 2 2 1 1 3 1 1 3 1 1 2 3 2 3 2
## [5514] 1 1 1 1 2 1 2 1 1 1 1 3 1 1 2 2 2 1 3 1 3 1 1 2 1 1 2 3 1 1 1 1 3 1 1 2 2
## [5551] 2 1 3 1 3 1 1 3 2 1 1 1 3 1 3 3 1 1 2 2 1 2 2 1 1 1 2 1 2 3 1 3 3 1 2 3 1
## [5588] 1 1 1 1 2 3 2 1 1 1 2 1 1 1 2 1 1 2 1 1 1 1 1 2 3 2 1 1 1 1 1 2 3 1 2 2 1
## [5625] 1 1 3 1 1 1 2 1 1 3 3 3 2 3 2 2 2 2 2 1 1 1 1 1 3 3 3 1 3 1 1 1 3 3 3 1 1
## [5662] 1 2 3 2 1 1 2 2 3 2 3 2 1 2 1 1 2 2 1 1 1 2 1 2 2 1 2 1 1 2 2 3 1 3 1 2 3
## [5699] 2 1 1 1 1 3 1 1 3 1 1 2 2 1 1 1 1 1 1 2 2 2 2 3 2 3 1 1 3 2 1 2 3 2 2 2 3
## [5736] 1 2 3 1 2 1 1 3 1 2 2 1 2 3 3 1 2 1 2 1 1 2 1 3 3 1 1 3 2 1 1 1 1 1 1 2 1
## [5773] 1 1 1 1 1 1 1 1 3 1 1 2 3 1 1 1 2 1 3 1 1 1 2 1 3 2 1 1 1 1 1 2 2 2 3 3 2
## [5810] 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 3 1 1 1 1 1 1 1 1 1 1 1 1 3 1
## [5847] 1 1 2 1 1 1 1 1 3 1 3 3 1 2 1 1 2 2 1 2 1 2 1 1 1 1 1 2 1 1 1 1 1 1 3 1 1
## [5884] 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 2 1 2 1 1 2 2 1 1 3 3 3 1 1 1 1 3 1
## [5921] 1 2 1 2 1 1 2 1 1 1 2 1 1 1 3 1 1 1 3 3 1 1 1 1 1 2 1 1 1 1 1 2 3 1 1 3 1
## [5958] 2 1 1 3 1 1 1 1 2 3 2 3 1 2 1 1 1 1 3 1 2 2 1 3 2 2 1 1 1 2 1 1 1 1 1 3 1
## [5995] 2 1 1 1 1 1 2 1 1 3 2 1 2 2 1 1 1 2 1 1 2 3 1 1 2 1 1 1 1 3 3 1 1 3 1 3 3
## [6032] 1 3 1 1 3 2 2 1 3 1 1 1 2 1 3 1 1 1 3 2 2 1 1 2 1 1 3 1 1 3 2 2 1 1 3 1 1
## [6069] 1 2 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 2 1 2 1 2 1 2 1 1 1 1 2 1 1 3 3 1
## [6106] 1 2 1 1 2 2 1 1 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1
## [6143] 1 1 1 3 1 1 1 2 1 1 3 1 1 1 1 2 1 3 2 1 1 1 1 1 1 2 1 3 1 1 1 1 1 3 1 2 3
## [6180] 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 2 1 2 1 1 1 3 1 1 1 1 1 1 1 3 1 2 1 2 2
## [6217] 1 1 1 1 2 3 1 1 1 1 1 2 1 3 1 1 1 2 1 1 1 1 2 1 1 1 1 2 1 1 2 3 1 1 2 1 2
## [6254] 1 3 2 3 2 2 1 3 2 2 1 2 1 3 1 1 1 2 1 1 1 3 2 3 1 1 3 3 3 1 1 3 1 1 1 2 3
## [6291] 1 3 1 1 1 3 1 3 1 1 3 2 1 3 1 1 2 1 1 3 2 2 2 1 2 1 1 1 1 1 1 1 1 3 1 1 2
## [6328] 3 3 3 1 1 3 1 2 3 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 2 1 3 1 1 3 3 3 1
## [6365] 3 3 1 3 3 1 1 1 1 1 3 1 3 3 3 1 1 1 1 3 1 1 2 2 1 1 1 1 1 1 1 3 1 1 1 1 1
## [6402] 1 2 1 1 1 1 3 3 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 1 3 1 3 1 1 3 1 1 1 1 3 3
## [6439] 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 3 3 1 3 2 1 1 1 1 1 1 3 1 3 1 2 1 2 1 1 2 1
## [6476] 1 1 3 1 1 1 2 2 1 1 1 1 1 2 2 3 2 1 1 1 1 1 3 1 1 3 3 1 1 1 2 3 3 2 2 1 3
## [6513] 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 1 1 1 1 3 1 1 1 1 2 2 1 1 1 1 1 2 1
## [6550] 1 1 3 3 1 3 1 1 3 2 1 3 1 2 1 1 1 2 1 1 1 1 2 2 2 1 1 1 1 1 2 1 1 1 1 1 1
## [6587] 2 1 1 1 2 1 1 1 2 1 1 1 2 3 2 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 2 1 1 1 1 1
## [6624] 1 1 1 1 1 3 2 1 3 1 2 1 1 1 1 1 1 2 1 1 2 1 1 3 1 1 1 1 2 1 1 2 1 1 1 1 1
## [6661] 1 1 1 1 1 1 1 3 1 1 3 1 2 1 1 1 1 2 2 2 3 2 1 1 2 1 3 2 3 3 1 1 2 2 1 1 1
## [6698] 3 3 2 3 1 2 1 2 2 2 2 2 1 3 2 3 3 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 1 3 2 1 2
## [6735] 3 1 3 3 3 1 1 1 1 2 2 2 3 3 1 1 3 1 1 2 3 2 2 2 1 2 3 1 2 2 1 1 1 3 2 1 1
## [6772] 3 1 1 1 2 1 3 2 2 2 2 1 1 3 3 2 1 1 1 2 2 1 3 2 1 3 1 3 1 1 3 3 2 2 1 2 1
## [6809] 2 3 3 3 1 1 1 3 1 3 1 1 1 2 1 1 2 1 2 2 2 1 3 1 2 1 3 1 3 1 1 1 3 1 1 1 1
## [6846] 1 1 1 1 3 1 2 1 1 1 2 3 1 1 1 2 1 2 2 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1
## [6883] 1 2 3 1 1 1 1 1 2 1 1 1 3 1 1 2 1 1 1 1 1 1 2 1 1 1 1 3 1 1 1 1 1 1 3 1 1
## [6920] 1 1 1 2 1 2 2 1 2 1 1 1 1 1 1 1 1 2 2 1 1 1 2 1 1 1 2 2 1 1 1 1 2 1 2 1 1
## [6957] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 2 1 2 2 1 1 1 1 3 1 2 1 3 1 1 2 1 1 1
## [6994] 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 3 1 1 1 1 2 3 2 1 2 1 2 1 2
## [7031] 1 1 3 1 1 2 1 1 3 1 1 1 1 1 1 2 1 3 1 1 1 3 1 3 3 1 1 3 1 3 3 1 1 1 1 2 1
## [7068] 1 3 1 1 1 1 3 1 1 3 1 3 1 1 2 2 2 2 2 1 1 1 1 3 1 1 2 3 3 3 3 3 1 1 1 2 1
## [7105] 1 1 1 1 2 3 1 1 1 1 1 2 3 2 3 1 2 1 1 1 1 1 3 3 1 3 1 2 3 2 3 1 2 3 1 2 1
## [7142] 1 2 1 3 1 1 2 1 1 1 1 1 3 3 1 1 1 1 1 3 2 1 1 1 3 3 1 1 3 3 1 3 1 1 1 1 1
## [7179] 3 1 2 3 1 2 3 1 1 2 1 3 1 1 1 2 1 2 1 1 1 1 1 2 3 1 3 2 1 1 1 3 1 1 2 1 1
## [7216] 1 3 1 1 1 2 3 3 1 1 1 1 3 3 1 1 1 1 1 3 3 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2
## [7253] 3 1 1 2 3 2 3 2 1 3 1 1 3 1 2 3 1 2 1 1 3 3 1 3 1 1 2 1 1 1 1 2 2 1 2 3 1
## [7290] 2 2 1 1 2 1 3 2 1 1 3 3 1 1 3 1 2 1 1 1 1 1 1 2 1 1 3 1 3 1 1 3 1 1 1 1 1
## [7327] 1 1 1 1 1 1 2 1 1 3 1 2 2 3 1 2 3 1 1 1 1 1 1 1 1 1 1 2 2 1 2 1 3 1 1 2 1
## [7364] 3 1 2 1 2 1 3 1 1 1 1 1 2 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 2 1 1 1 2 3 1 1
## [7401] 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 2 2 1 1 1 3 3 1 1 1 3 1 1 1 1 3 3 3 1 2
## [7438] 1 2 1 1 3 3 1 1 1 1 2 2 3 1 2 2 1 2 2 3 3 1 3 3 1 2 2 2 1 3 1 1 3 3 2 2 3
## [7475] 1 3 1 3 3 3 1 2 2 2 1 1 3 1 3 3 1 2 3 1 1 1 1 1 1 1 1 3 3 1 1 1 1 2 3 2 3
## [7512] 1 1 1 1 1 1 1 3 2 1 1 1 1 1 1 2 1 1 1 1 2 1 2 1 1 2 3 3 1 3 2 2 1 2 1 1 2
## [7549] 1 2 1 2 2 3 2 3 3 2 3 1 1 3 1 3 3 1 1 2 1 1 2 2 1 1 3 2 3 1 1 1 1 2 1 1 2
## [7586] 1 1 3 1 1 1 3 2 3 2 3 2 1 2 1 3 1 1 2 3 1 1 2 1 1 2 1 1 1 1 1 3 1 1 1 1 1
## [7623] 1 1 1 2 3 1 1 1 1 1 3 2 1 1 3 1 1 2 2 1 2 1 1 1 1 3 1 1 1 2 2 1 1 3 1 1 1
## [7660] 2 1 2 1 1 1 2 1 1 2 1 1 3 1 1 1 1 1 1 1 3 1 1 1 1 1 1 2 1 3 2 3 3 1 1 1 1
## [7697] 2 1 2 1 2 2 1 1 2 3 1 1 1 3 1 2 1 1 1 1 2 3 1 1 1 3 1 2 1 1 1 1 2 2 1 1 2
## [7734] 1 3 1 3 3 2 3 1 2 1 1 2 1 1 2 1 1 3 2 1 2 1 1 1 1 2 1 1 1 2 1 1 2 1 1 1 2
## [7771] 2 2 1 1 1 2 3 1 1 3 2 3 1 1 3 1 1 1 1 3 1 3 1 1 3 3 3 2 3 3 2 3 3 1 1 3 1
## [7808] 3 3 1 2 2 3 1 1 1 2 1 3 1 1 1 1 2 2 1 2 2 1 2 3 2 2 1 3 1 3 2 1 1 3 3 3 1
## [7845] 1 2 2 3 3 3 1 1 1 3 2 2 1 1 2 1 1 1 1 2 2 3 1 1 2 2 3 1 1 2 1 3 1 2 2 2 1
## [7882] 1 2 1 2 1 1 1 2 1 2 1 2 1 1 1 1 2 2 3 1 3 2 1 2 1 1 1 1 1 1 1 1 1 1 3 3 2
## [7919] 1 2 1 1 2 1 2 1 1 1 1 2 1 2 1 1 1 2 1 1 1 1 3 1 1 3 1 1 1 3 2 1 2 1 1 1 3
## [7956] 1 1 3 1 3 3 3 1 1 1 1 1 1 3 1 1 1 1 1 1 1 2 1 3 1 2 1 1 1 3 1 3 1 3 2 1 1
## [7993] 3 3 1 1 3 1 1 2 1 1 1 3 1 1 1 1 1 1 3 3 3 1 2 1 3 2 1 1 2 1 1 3 1 2 3 2 3
## [8030] 1 3 1 1 1 1 3 1 1 1 1 1 1 3 3 3 1 2 2 1 1 2 2 1 1 1 1 2 1 1 1 1 1 2 1 1 1
## [8067] 2 2 1 3 2 1 1 1 1 1 1 1 3 1 1 3 1 1 3 1 1 1 2 1 2 1 2 1 1 1 2 2 1 1 1 2 1
## [8104] 1 1 1 1 2 1 1 1 3 3 1 1 1 3 1 2 3 1 1 1 1 1 1 1 1 1 1 3 1 1 1 3 1 1 1 1 3
## [8141] 2 1 1 1 2 1 1 1 1 1 3 1 3 1 1 1 1 2 3 1 3 3 2 1 1 1 1 1 1 2 3 3 1 1 1 1 1
## [8178] 1 1 1 1 2 1 1 2 1 2 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 2 1 1 3 1 3 3 3 1 1 1 1
## [8215] 1 1 3 3 1 1 1 3 3 1 3 1 1 1 1 3 3 2 1 2 1 2 1 1 3 1 1 1 2 1 1 1 1 3 3 1 2
## [8252] 3 1 1 2 1 3 1 1 1 3 1 3 3 3 1 1 3 3 3 1 1 1 1 1 3 1 3 3 1 3 3 1 1 3 2 3 2
## [8289] 2 3 1 3 1 1 2 1 1 1 3 1 1 3 3 3 2 1 3 3 2 2 1 1 1 3 1 1 3 2 1 2 3 1 3 2 1
## [8326] 1 1 1 1 3 1 1 1 1 1 1 3 1 1 2 1 1 3 3 3 1 1 2 2 1 1 1 1 3 1 2 3 3 1 2 1 2
## [8363] 3 3 1 2 1 3 1 1 3 1 1 1 1 1 1 1 1 1 3 2 1 1 2 1 2 2 1 1 2 1 3 1 2 1 1 2 2
## [8400] 3 1 1 3 3 2 1 2 1 2 1 1 1 2 3 1 1 1 1 1 3 1 2 1 1 2 3 1 1 2 1 1 1 1 1 1 1
## [8437] 1 1 1 1 1 3 3 3 2 3 2 1 1 1 2 1 2 2 1 1 1 1 1 1 1 1 3 1 1 1 1 2 1 1 1 3 1
## [8474] 3 1 3 1 3 2 1 1 2 1 1 1 1 1 1 1 2 1 1 3 1 1 1 2 1 1 1 1 1 1 1 1 2 1 3 1 1
## [8511] 1 1 1 2 1 1 3 1 2 1 1 1 1 1 1 1 2 2 2 2 1 3 1 1 3 1 2 1 1 2 1 1 1 1 2 1 1
## [8548] 1 2 3 1 1 1 1 1 1 1 1 1 3 2 1 1 1 1 1 3 1 1 3 1 1 1 1 1 1 1 1 1 3 1 1 1 1
## [8585] 2 3 3 1 1 2 3 2 3 1 1 3 3 2 1 2 1 1 2 2 1 1 3 1 1 2 3 1 3 1 1 2 1 1 1 3 1
## [8622] 1 3 1 1 1 2 2 1 1 3 1 1 1 1 1 1 1 1 3 3 2 2 1 2 3 1 1 2 1 1 3 3 1 1 1 1 3
## [8659] 1 3 1 3 3 1 3 1 1 2 1 1 1 1 1 3 1 3 1 3 2 1 2 2 3 1 2 1 1 2 1 1 3 1 2 2 1
## [8696] 2 3 3 3 3 1 1 1 3 3 2 1 1 2 2 2 1 3 2 2 2 1 2 2 1 1 1 1 1 1 1 1 3 1 1 1 1
## [8733] 1 1 1 1 3 1 1 3 3 3 2 3 2 3 1 1 2 1 1 2 2 3 1 3 3 3 3 1 3 3 3 1 3 2 1 3 2
## [8770] 1 1 2 1 2 1 1 2 3 1 1 1 3 1 1 1 1 2 3 1 1 3 1 2 1 1 3 3 1 1 2 1 1 1 1 1 2
## [8807] 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 2 1 1 2 2 2 1 2 1 2 1 3 1 1 2 1 1 1 1
## [8844] 2 2 1 3 2 1 2 2 1 2 1 2 2 1 3 1 3 1 1 2 1 2 3 1 1 1 2 1 2 1 1 2 1 1 1 1 1
## [8881] 1 1 3 3 1 3 1 2 1 1 2 1 3 1 1 3 1 2 1 1 1 2 2 1 1 1 2 1 1 1 1 1 1 2 1 1 1
## [8918] 1 2 2 1 1 1 1 1 2 1 3 1 1 1 1 2 1 1 1 1 3 1 1 2 3 2 2 1 1 1 2 1 1 2 3 1 1
## [8955] 1 1 1 2 1 1 1 1 1 1 2 2 1 1 1 1 1 3 1 2 1 1 2 2 2 1 1 2 2 1 2 1 2 1 1 1 2
## [8992] 1 1 3 3 1 2 2 2 1 2 2 1 2 1 1 3 1 1 1 1 2 1 1 3 3 1 2 1 3 1 1 1 1 2 2 2 1
## [9029] 1 1 1 1 2 2 1 1 2 1 2 2 1 1 3 1 2 1 1 1 2 3 1 1 1 1 2 1 3 3 1 1 1 1 2 1 3
## [9066] 3 2 1 1 3 3 3 2 2 1 1 1 1 3 2 1 2 3 1 1 2 1 1 3 1 2 3 2 1 3 3 3 1 1 1 1 1
## [9103] 1 1 2 3 1 1 1 2 2 1 3 2 1 3 1 2 2 3 3 1 3 1 2 1 3 1 3 1 3 1 2 1 2 1 1 1 1
## [9140] 1 3 1 1 3 3 2 2 2 1 1 1 1 1 2 1 1 2 1 1 1 1 3 1 1 1 1 3 1 2 1 3 1 3 2 2 2
## [9177] 2 1 1 2 3 1 2 3 1 2 2 1 3 1 1 3 1 1 2 1 1 1 1 3 1 2 1 1 1 2 2 1 1 1 1 2 3
## [9214] 3 1 3 3 1 1 1 1 3 2 3 1 3 1 1 1 1 1 2 1 3 1 2 1 3 1 1 1 1 1 3 2 3 1 1 1 2
## [9251] 1 3 1 1 3 1 1 3 2 1 2 2 3 2 1 1 3 1 1 1 3 2 3 3 1 1 3 2 1 1 1 1 1 1 1 2 2
## [9288] 1 3 1 1 3 1 3 1 2 1 1 1 2 1 1 1 1 3 1 1 1 2 2 3 1 1 1 2 2 1 3 1 1 1 1 1 1
## [9325] 1 2 1 2 2 1 2 2 3 1 1 1 1 2 1 1 3 3 1 1 1 1 2 1 1 1 1 1 1 2 2 1 1 1 3 1 1
## [9362] 1 2 1 1 1 1 1 1 1 3 1 2 1 2 1 2 1 3 1 1 1 1 2 1 1 1 1 1 1 2 1 3 1 1 1 1 1
## [9399] 2 1 1 1 2 1 1 3 2 2 2 1 1 2 1 1 2 1 1 2 1 1 1 1 1 1 1 1 2 1 3 2 1 2 1 1 1
## [9436] 2 1 2 1 2 1 1 3 2 1 1 2 2 1 1 1 2 3 1 1 1 1 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1
## [9473] 2 1 1 1 1 1 1 1 2 3 1 1 2 2 2 1 1 1 1 2 1 1 1 1 1 1 3 1 1 2 1 1 1 1 1 1 3
## [9510] 2 3 1 1 1 1 1 3 1 1 1 1 1 2 1 1 3 2 1 2 3 1 1 3 2 3 1 1 1 1 1 1 1 1 2 1 3
## [9547] 2 1 3 1 1 1 1 1 2 1 1 1 1 3 1 1 2 1 2 1 1 1 2 1 3 1 2 2 1 3 3 3 2 3 1 2 1
## [9584] 1 1 1 1 2 1 1 1 1 1 2 2 2 1 1 1 1 2 1 3 1 1 1 1 3 1 1 1 3 1 2 3 1 2 1 3 1
## [9621] 1 1 3 1 3 1 3 2 1 1 1 1 1 1 1 1 1 2 2 2 1 3 3 1 2 2 1 1 1 1 1 1 1 2 2 1 3
## [9658] 1 2 3 3 3 1 1 2 1 1 1 2 1 1 1 1 2 3 2 1 2 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 3
## [9695] 1 1 1 2 2 1 2 2 1 2 3 1 1 2 1 1 1 2 1 1 2 1 1 1 2 1 1 1 1 1 1 2 2 1 1 2 3
## [9732] 1 2 1 2 1 3 3 1 1 2 1 1 3 3 1 2 3 1 1 1 1 3 3 1 3 3 2 1 2 3 1 1 1 1 3 1 2
## [9769] 1 1 1 1 1 1 1 1 3 2 3 3 3 2 1 2 2 1 1 1 3 1 1 2 2 3 2 1 3 1 1 1 2 3 2 2 1
## [9806] 1 2 1 1 1 1 2 3 2 2 1 1 2 1 3 1 3 1 1 1 1 1 3 3 1 2 1 3 1 1
## 
## Within cluster sum of squares by cluster:
## [1] 18653.424 10006.418  7949.251
##  (between_SS / total_SS =   8.0 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"
plot(pca_result$x[, 1:2], col = kmeans_result$cluster, pch = 19,
     xlab = "PC1", ylab = "PC2", main = "Clusters of Transactions")
points(kmeans_result$centers %*% pca_result$rotation[, 1:2], col = 1:optimal_k, pch = 4, cex = 2)

loadingss<- pca_result$rotation
pc1_contributions <- sort(abs(loadingss[, 1]), decreasing = TRUE)
print("top_pc1 contributers:\n")
## [1] "top_pc1 contributers:\n"
print(pc1_contributions[1:10])
##   other vegetables         whole milk    root vegetables             yogurt 
##          0.2286435          0.2081489          0.1995003          0.1829309 
## whipped/sour cream     tropical fruit             butter      domestic eggs 
##          0.1739899          0.1718576          0.1614764          0.1584362 
##       citrus fruit          pip fruit 
##          0.1462859          0.1460161
# Sort loadings for PC2
pc2_contributions <- sort(abs(loadingss[, 2]), decreasing = TRUE)
print("top_pc2 contributers:\n")
## [1] "top_pc2 contributers:\n"
print(pc2_contributions[1:10])
##            soda   shopping bags       chocolate root vegetables   specialty bar 
##       0.2487323       0.2129730       0.2054469       0.1943659       0.1752641 
##           herbs         waffles     salty snack     white bread           candy 
##       0.1733047       0.1728789       0.1687948       0.1653956       0.1637656

Even after performing PCA, the plot above shows significant overlap between clusters. This suggests that many transactions share similar items, which is expected since each point represents a transaction containing multiple items. However, this overlap highlights a limitation of using k-means clustering for this dataset.

K-means clustering assumes spherical clusters of equal size, which is often not realistic for transactional data where clusters can be irregularly shaped, and transactions may share common items. Additionally, while PCA reduces dimensionality, it focuses on maximizing variance rather than explicitly separating clusters, which may contribute to the observed overlap.