9E5. Which value should Rhat approach, when a chain is sampling the posterior distribution correctly?

Rhat should approach 1. How close should it get? People disagree, but it is common to judge that any value less than 1.1 indicates convergence. But like all heuristic indicators, Rhat can be fooled.

9H2. Recall the divorce rate example from Chapter 5. Repeat that analysis, using ulam this time, fitting models m5.1, m5.2, and m5.3. Use compare to compare the models on the basis of WAIC or PSIS. To use WAIC or PSIS with ulam, you need add the argument log_log=TRUE. Explain the model comparison results.

library(rethinking)
data(WaffleDivorce)
d <- WaffleDivorce

# standardize variables
d$D <- standardize( d$Divorce )
d$M <- standardize( d$Marriage )
d$A <- standardize( d$MedianAgeMarriage )
d_trim <- list(D=d$D,M=d$M,A=d$A)

Here are models m5.1, m5.2, and m5.3, fit using ulam:

m5.1_stan <- ulam(
    alist(
        D ~ dnorm(mu, sigma),
        mu <- a + bA * A,
        a ~ dnorm(0,0.2),
        bA ~ dnorm(0,0.5),
        sigma ~ dexp(1)
    ) , data = d_trim,chains=4,log_lik=TRUE )

SAMPLING FOR MODEL 'bc675254cc2159bb33743bbf24468ab3' NOW (CHAIN 1).
Chain 1: 
Chain 1: Gradient evaluation took 1.8e-05 seconds
Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.18 seconds.
Chain 1: Adjust your expectations accordingly!
Chain 1: 
Chain 1: 
Chain 1: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 1: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 1: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 1: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 1: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 1: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 1: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 1: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 1: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 1: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 1: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 1: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 1: 
Chain 1:  Elapsed Time: 0.020906 seconds (Warm-up)
Chain 1:                0.021066 seconds (Sampling)
Chain 1:                0.041972 seconds (Total)
Chain 1: 

SAMPLING FOR MODEL 'bc675254cc2159bb33743bbf24468ab3' NOW (CHAIN 2).
Chain 2: 
Chain 2: Gradient evaluation took 1e-05 seconds
Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 0.1 seconds.
Chain 2: Adjust your expectations accordingly!
Chain 2: 
Chain 2: 
Chain 2: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 2: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 2: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 2: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 2: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 2: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 2: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 2: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 2: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 2: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 2: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 2: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 2: 
Chain 2:  Elapsed Time: 0.019307 seconds (Warm-up)
Chain 2:                0.01916 seconds (Sampling)
Chain 2:                0.038467 seconds (Total)
Chain 2: 

SAMPLING FOR MODEL 'bc675254cc2159bb33743bbf24468ab3' NOW (CHAIN 3).
Chain 3: 
Chain 3: Gradient evaluation took 1e-05 seconds
Chain 3: 1000 transitions using 10 leapfrog steps per transition would take 0.1 seconds.
Chain 3: Adjust your expectations accordingly!
Chain 3: 
Chain 3: 
Chain 3: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 3: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 3: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 3: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 3: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 3: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 3: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 3: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 3: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 3: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 3: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 3: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 3: 
Chain 3:  Elapsed Time: 0.021357 seconds (Warm-up)
Chain 3:                0.019328 seconds (Sampling)
Chain 3:                0.040685 seconds (Total)
Chain 3: 

SAMPLING FOR MODEL 'bc675254cc2159bb33743bbf24468ab3' NOW (CHAIN 4).
Chain 4: 
Chain 4: Gradient evaluation took 1e-05 seconds
Chain 4: 1000 transitions using 10 leapfrog steps per transition would take 0.1 seconds.
Chain 4: Adjust your expectations accordingly!
Chain 4: 
Chain 4: 
Chain 4: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 4: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 4: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 4: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 4: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 4: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 4: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 4: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 4: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 4: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 4: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 4: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 4: 
Chain 4:  Elapsed Time: 0.018341 seconds (Warm-up)
Chain 4:                0.017294 seconds (Sampling)
Chain 4:                0.035635 seconds (Total)
Chain 4: 
m5.2_stan <- ulam(
    alist(
        D ~ dnorm( mu , sigma ) ,
        mu <- a + bM * M ,
        a ~ dnorm( 0 , 0.2 ) ,
        bM ~ dnorm( 0 , 0.5 ) ,
        sigma ~ dexp( 1 )
    ) , data = d_trim, chains=4,log_lik=TRUE )

SAMPLING FOR MODEL '8b690dbf8986a1e80daeae2b8293f78f' NOW (CHAIN 1).
Chain 1: 
Chain 1: Gradient evaluation took 1.8e-05 seconds
Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.18 seconds.
Chain 1: Adjust your expectations accordingly!
Chain 1: 
Chain 1: 
Chain 1: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 1: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 1: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 1: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 1: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 1: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 1: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 1: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 1: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 1: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 1: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 1: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 1: 
Chain 1:  Elapsed Time: 0.021887 seconds (Warm-up)
Chain 1:                0.01937 seconds (Sampling)
Chain 1:                0.041257 seconds (Total)
Chain 1: 

SAMPLING FOR MODEL '8b690dbf8986a1e80daeae2b8293f78f' NOW (CHAIN 2).
Chain 2: 
Chain 2: Gradient evaluation took 2.8e-05 seconds
Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 0.28 seconds.
Chain 2: Adjust your expectations accordingly!
Chain 2: 
Chain 2: 
Chain 2: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 2: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 2: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 2: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 2: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 2: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 2: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 2: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 2: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 2: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 2: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 2: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 2: 
Chain 2:  Elapsed Time: 0.021591 seconds (Warm-up)
Chain 2:                0.019159 seconds (Sampling)
Chain 2:                0.04075 seconds (Total)
Chain 2: 

SAMPLING FOR MODEL '8b690dbf8986a1e80daeae2b8293f78f' NOW (CHAIN 3).
Chain 3: 
Chain 3: Gradient evaluation took 1.7e-05 seconds
Chain 3: 1000 transitions using 10 leapfrog steps per transition would take 0.17 seconds.
Chain 3: Adjust your expectations accordingly!
Chain 3: 
Chain 3: 
Chain 3: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 3: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 3: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 3: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 3: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 3: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 3: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 3: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 3: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 3: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 3: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 3: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 3: 
Chain 3:  Elapsed Time: 0.01939 seconds (Warm-up)
Chain 3:                0.01938 seconds (Sampling)
Chain 3:                0.03877 seconds (Total)
Chain 3: 

SAMPLING FOR MODEL '8b690dbf8986a1e80daeae2b8293f78f' NOW (CHAIN 4).
Chain 4: 
Chain 4: Gradient evaluation took 1.1e-05 seconds
Chain 4: 1000 transitions using 10 leapfrog steps per transition would take 0.11 seconds.
Chain 4: Adjust your expectations accordingly!
Chain 4: 
Chain 4: 
Chain 4: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 4: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 4: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 4: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 4: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 4: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 4: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 4: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 4: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 4: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 4: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 4: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 4: 
Chain 4:  Elapsed Time: 0.020078 seconds (Warm-up)
Chain 4:                0.018492 seconds (Sampling)
Chain 4:                0.03857 seconds (Total)
Chain 4: 
m5.3_stan <- ulam(
    alist(
        D ~ dnorm( mu , sigma ) ,
        mu <- a + bM*M + bA*A ,
        a ~ dnorm( 0 , 0.2 ) ,
        bM ~ dnorm( 0 , 0.5 ) ,
        bA ~ dnorm( 0 , 0.5 ) ,
        sigma ~ dexp( 1 )
    ) , data = d_trim, chains=4,log_lik=TRUE)

SAMPLING FOR MODEL 'd27a7128c546624a07b356f67a87a125' NOW (CHAIN 1).
Chain 1: 
Chain 1: Gradient evaluation took 2.2e-05 seconds
Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.22 seconds.
Chain 1: Adjust your expectations accordingly!
Chain 1: 
Chain 1: 
Chain 1: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 1: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 1: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 1: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 1: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 1: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 1: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 1: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 1: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 1: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 1: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 1: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 1: 
Chain 1:  Elapsed Time: 0.033137 seconds (Warm-up)
Chain 1:                0.032715 seconds (Sampling)
Chain 1:                0.065852 seconds (Total)
Chain 1: 

SAMPLING FOR MODEL 'd27a7128c546624a07b356f67a87a125' NOW (CHAIN 2).
Chain 2: 
Chain 2: Gradient evaluation took 1.9e-05 seconds
Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 0.19 seconds.
Chain 2: Adjust your expectations accordingly!
Chain 2: 
Chain 2: 
Chain 2: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 2: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 2: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 2: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 2: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 2: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 2: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 2: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 2: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 2: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 2: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 2: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 2: 
Chain 2:  Elapsed Time: 0.028807 seconds (Warm-up)
Chain 2:                0.029516 seconds (Sampling)
Chain 2:                0.058323 seconds (Total)
Chain 2: 

SAMPLING FOR MODEL 'd27a7128c546624a07b356f67a87a125' NOW (CHAIN 3).
Chain 3: 
Chain 3: Gradient evaluation took 2e-05 seconds
Chain 3: 1000 transitions using 10 leapfrog steps per transition would take 0.2 seconds.
Chain 3: Adjust your expectations accordingly!
Chain 3: 
Chain 3: 
Chain 3: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 3: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 3: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 3: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 3: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 3: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 3: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 3: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 3: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 3: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 3: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 3: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 3: 
Chain 3:  Elapsed Time: 0.02979 seconds (Warm-up)
Chain 3:                0.027332 seconds (Sampling)
Chain 3:                0.057122 seconds (Total)
Chain 3: 

SAMPLING FOR MODEL 'd27a7128c546624a07b356f67a87a125' NOW (CHAIN 4).
Chain 4: 
Chain 4: Gradient evaluation took 1.2e-05 seconds
Chain 4: 1000 transitions using 10 leapfrog steps per transition would take 0.12 seconds.
Chain 4: Adjust your expectations accordingly!
Chain 4: 
Chain 4: 
Chain 4: Iteration:   1 / 1000 [  0%]  (Warmup)
Chain 4: Iteration: 100 / 1000 [ 10%]  (Warmup)
Chain 4: Iteration: 200 / 1000 [ 20%]  (Warmup)
Chain 4: Iteration: 300 / 1000 [ 30%]  (Warmup)
Chain 4: Iteration: 400 / 1000 [ 40%]  (Warmup)
Chain 4: Iteration: 500 / 1000 [ 50%]  (Warmup)
Chain 4: Iteration: 501 / 1000 [ 50%]  (Sampling)
Chain 4: Iteration: 600 / 1000 [ 60%]  (Sampling)
Chain 4: Iteration: 700 / 1000 [ 70%]  (Sampling)
Chain 4: Iteration: 800 / 1000 [ 80%]  (Sampling)
Chain 4: Iteration: 900 / 1000 [ 90%]  (Sampling)
Chain 4: Iteration: 1000 / 1000 [100%]  (Sampling)
Chain 4: 
Chain 4:  Elapsed Time: 0.034278 seconds (Warm-up)
Chain 4:                0.029295 seconds (Sampling)
Chain 4:                0.063573 seconds (Total)
Chain 4: 
precis(m5.1_stan)
precis(m5.2_stan)
precis(m5.3_stan)
compare(m5.1_stan, m5.2_stan, m5.3_stan, func=PSIS)
Some Pareto k values are high (>0.5). Set pointwise=TRUE to inspect individual points.
Some Pareto k values are high (>0.5). Set pointwise=TRUE to inspect individual points.
compare(m5.1_stan, m5.2_stan, m5.3_stan, func=WAIC)
LS0tCnRpdGxlOiAiTWVldGluZyA5IFNvbHV0aW9ucyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKOUU1LiAgV2hpY2ggdmFsdWUgc2hvdWxkIFJoYXQgYXBwcm9hY2gsIHdoZW4gYSBjaGFpbiBpcyBzYW1wbGluZyB0aGUgcG9zdGVyaW9yIGRpc3RyaWJ1dGlvbiBjb3JyZWN0bHk/CgpfUmhhdCBzaG91bGQgYXBwcm9hY2ggMS4gSG93IGNsb3NlIHNob3VsZCBpdCBnZXQ/IFBlb3BsZSBkaXNhZ3JlZSwgYnV0IGl0IGlzIGNvbW1vbiB0byBqdWRnZSB0aGF0IGFueSB2YWx1ZSBsZXNzIHRoYW4gMS4xIGluZGljYXRlcyBjb252ZXJnZW5jZS4gQnV0IGxpa2UgYWxsIGhldXJpc3RpYyBpbmRpY2F0b3JzLCBSaGF0IGNhbiBiZSBmb29sZWQuXwoKOUgyLiAgUmVjYWxsIHRoZSBkaXZvcmNlIHJhdGUgZXhhbXBsZSBmcm9tIENoYXB0ZXIgNS4gUmVwZWF0IHRoYXQgYW5hbHlzaXMsIHVzaW5nIHVsYW0gdGhpcyB0aW1lLCBmaXR0aW5nIG1vZGVscyBtNS4xLCBtNS4yLCBhbmQgbTUuMy4gVXNlIGNvbXBhcmUgdG8gY29tcGFyZSB0aGUgbW9kZWxzIG9uIHRoZSBiYXNpcyBvZiBXQUlDIG9yIFBTSVMuIFRvIHVzZSBXQUlDIG9yIFBTSVMgd2l0aCB1bGFtLCB5b3UgbmVlZCBhZGQgdGhlIGFyZ3VtZW50IGxvZ19sb2c9VFJVRS4gRXhwbGFpbiB0aGUgbW9kZWwgY29tcGFyaXNvbiByZXN1bHRzLgoKYGBge3J9CmxpYnJhcnkocmV0aGlua2luZykKZGF0YShXYWZmbGVEaXZvcmNlKQpkIDwtIFdhZmZsZURpdm9yY2UKCiMgc3RhbmRhcmRpemUgdmFyaWFibGVzCmQkRCA8LSBzdGFuZGFyZGl6ZSggZCREaXZvcmNlICkKZCRNIDwtIHN0YW5kYXJkaXplKCBkJE1hcnJpYWdlICkKZCRBIDwtIHN0YW5kYXJkaXplKCBkJE1lZGlhbkFnZU1hcnJpYWdlICkKZF90cmltIDwtIGxpc3QoRD1kJEQsTT1kJE0sQT1kJEEpCmBgYAoKCkhlcmUgYXJlIG1vZGVscyBtNS4xLCBtNS4yLCBhbmQgbTUuMywgZml0IHVzaW5nIHVsYW06CgpgYGB7cn0KbTUuMV9zdGFuIDwtIHVsYW0oCiAgICBhbGlzdCgKICAgICAgICBEIH4gZG5vcm0obXUsIHNpZ21hKSwKICAgICAgICBtdSA8LSBhICsgYkEgKiBBLAogICAgICAgIGEgfiBkbm9ybSgwLDAuMiksCiAgICAgICAgYkEgfiBkbm9ybSgwLDAuNSksCiAgICAgICAgc2lnbWEgfiBkZXhwKDEpCiAgICApICwgZGF0YSA9IGRfdHJpbSxjaGFpbnM9NCxsb2dfbGlrPVRSVUUgKQpgYGAKCmBgYHtyfQptNS4yX3N0YW4gPC0gdWxhbSgKICAgIGFsaXN0KAogICAgICAgIEQgfiBkbm9ybSggbXUgLCBzaWdtYSApICwKICAgICAgICBtdSA8LSBhICsgYk0gKiBNICwKICAgICAgICBhIH4gZG5vcm0oIDAgLCAwLjIgKSAsCiAgICAgICAgYk0gfiBkbm9ybSggMCAsIDAuNSApICwKICAgICAgICBzaWdtYSB+IGRleHAoIDEgKQogICAgKSAsIGRhdGEgPSBkX3RyaW0sIGNoYWlucz00LGxvZ19saWs9VFJVRSApCmBgYAoKCmBgYHtyfQptNS4zX3N0YW4gPC0gdWxhbSgKICAgIGFsaXN0KAogICAgICAgIEQgfiBkbm9ybSggbXUgLCBzaWdtYSApICwKICAgICAgICBtdSA8LSBhICsgYk0qTSArIGJBKkEgLAogICAgICAgIGEgfiBkbm9ybSggMCAsIDAuMiApICwKICAgICAgICBiTSB+IGRub3JtKCAwICwgMC41ICkgLAogICAgICAgIGJBIH4gZG5vcm0oIDAgLCAwLjUgKSAsCiAgICAgICAgc2lnbWEgfiBkZXhwKCAxICkKICAgICkgLCBkYXRhID0gZF90cmltLCBjaGFpbnM9NCxsb2dfbGlrPVRSVUUpCmBgYApgYGB7cn0KcHJlY2lzKG01LjFfc3RhbikKcHJlY2lzKG01LjJfc3RhbikKcHJlY2lzKG01LjNfc3RhbikKYGBgCgoKYGBge3J9CmNvbXBhcmUobTUuMV9zdGFuLCBtNS4yX3N0YW4sIG01LjNfc3RhbiwgZnVuYz1QU0lTKQpgYGAKCmBgYHtyfQpjb21wYXJlKG01LjFfc3RhbiwgbTUuMl9zdGFuLCBtNS4zX3N0YW4sIGZ1bmM9V0FJQykKYGBgCgo=