2C chart - assuming that the variables X and Y are dependent. (Artigo Lee e Costa_2009)
library(extraDistr)
library(knitr)
Correlation = 0.30
#in control
lamb_1_in <- 1
lamb_2_in <- 1
lamb_3_in <- 0.4285714
lamb_x <- lamb_1_in+lamb_3_in
lamb_y <- lamb_2_in+lamb_3_in
LSC_1=qpois(0.0027,lower.tail = F,lamb_x); "LSC_1"; LSC_1
[1] "LSC_1"
[1] 6
LSC_2=qpois(0.0027,lower.tail = F,lamb_y); "LSC_2"; LSC_2
[1] "LSC_2"
[1] 6
LIC_1=LIC_2=0
result<-0
for (x in 0:LSC_1) {
for (y in 0:LSC_2) {
beta_biv = dbvpois(x, y, lamb_1_in, lamb_2_in, lamb_3_in)
# print(beta_biv)
result=result+beta_biv
}}
ARLo=1/(1-result); "ARLo"; ARLo
[1] "ARLo"
[1] 724.0651
# shift
lamb_1_out = c(1,0.9494114,0.9036814,0.8616244,0.8224794,1.2500000,1.1988680,1.1518480,1.1080830,1.5000000,1.4484920,1.4005500,2.0000000)
lamb_2_out = c(1,1.3065540,1.6179670,1.9330530,2.2510510,1.2500000,1.5560110,1.8661340,2.1795120,1.5000000,1.8056350,2.1148350,2.0000000)
lamb_3_out = c(0.4285714,0.4791600,0.5248900,0.5669470,0.6060920,0.5357140,0.5868460,0.6338660,0.6776310,0.6428570,0.6943650,0.7423075,0.8571429)
lamb_x <- lamb_1_out+lamb_3_out
lamb_y <- lamb_2_out+lamb_3_out
ro <- lamb_3_out/sqrt((lamb_1_out+lamb_3_out)*(lamb_2_out+lamb_3_out))
shiftx = lamb_x/(lamb_1_in+lamb_3_in)
shifty = lamb_y/(lamb_2_in+lamb_3_in)
result<-0
for (x in 0:LSC_1) {
for (y in 0:LSC_2) {
beta_biv = dbvpois(x, y, lamb_1_out, lamb_2_out, lamb_3_out)
result=result+beta_biv
}}
ARL1=round(1/(1-result) ,2) #"ARL1";ARL1
kable(round(data.frame(shiftx,shifty,lamb_1_out, lamb_2_out, lamb_3_out, lamb_x, lamb_y, ro, ARL1), digits = 5),format = "pandoc")
shiftx shifty lamb_1_out lamb_2_out lamb_3_out lamb_x lamb_y ro ARL1
------- ------- ----------- ----------- ----------- -------- -------- ---- -------
1.00 1.00 1.00000 1.00000 0.42857 1.42857 1.42857 0.3 724.07
1.00 1.25 0.94941 1.30655 0.47916 1.42857 1.78571 0.3 320.79
1.00 1.50 0.90368 1.61797 0.52489 1.42857 2.14286 0.3 140.19
1.00 1.75 0.86162 1.93305 0.56695 1.42857 2.50000 0.3 67.75
1.00 2.00 0.82248 2.25105 0.60609 1.42857 2.85714 0.3 36.59
1.25 1.25 1.25000 1.25000 0.53571 1.78571 1.78571 0.3 207.64
1.25 1.50 1.19887 1.55601 0.58685 1.78571 2.14286 0.3 114.03
1.25 1.75 1.15185 1.86613 0.63387 1.78571 2.50000 0.3 61.32
1.25 2.00 1.10808 2.17951 0.67763 1.78571 2.85714 0.3 34.77
1.50 1.50 1.50000 1.50000 0.64286 2.14286 2.14286 0.3 79.28
1.50 1.75 1.44849 1.80564 0.69436 2.14286 2.50000 0.3 50.03
1.50 2.00 1.40055 2.11483 0.74231 2.14286 2.85714 0.3 31.03
2.00 2.00 2.00000 2.00000 0.85714 2.85714 2.85714 0.3 19.84
Correlation = 0.50
#in control
lamb_1_in <- 1
lamb_2_in <- 1
lamb_3_in <- 1
lamb_x <- lamb_1_in+lamb_3_in
lamb_y <- lamb_2_in+lamb_3_in
LSC_1=qpois(0.0027,lower.tail = F,lamb_x); "LSC_1"; LSC_1
[1] "LSC_1"
[1] 7
LSC_2=qpois(0.0027,lower.tail = F,lamb_y); "LSC_2"; LSC_2
[1] "LSC_2"
[1] 7
LIC_1=LIC_2=0
result<-0
for (x in 0:LSC_1) {
for (y in 0:LSC_2) {
beta_biv = dbvpois(x, y, lamb_1_in, lamb_2_in, lamb_3_in)
# print(beta_biv)
result=result+beta_biv
}}
ARLo=1/(1-result); "ARLo"; ARLo
[1] "ARLo"
[1] 477.9742
# shift
lamb_1_out = c(1,0.8819660,0.7752551,0.6771244,0.5857865,1.2500000,1.1306940,1.0209800,0.9188613,1.5000000,1.3798150,1.2679490,2.0000000)
lamb_2_out = c(1,1.3819660,1.7752550,2.1771240,2.5857870,1.2500000,1.6306940,2.0209800,2.4188610,1.5000000,1.8798150,2.2679490,2.0000000)
lamb_3_out = c(1.0000,1.1180340,1.2247450,1.3228760,1.4142140,1.2500000,1.3693060,1.4790200,1.5811390,1.5000000,1.6201850,1.7320510,2.0000000)
lamb_x <- lamb_1_out+lamb_3_out
lamb_y <- lamb_2_out+lamb_3_out
ro <- lamb_3_out/sqrt((lamb_1_out+lamb_3_out)*(lamb_2_out+lamb_3_out))
shiftx = lamb_x/(lamb_1_in+lamb_3_in)
shifty = lamb_y/(lamb_2_in+lamb_3_in)
result<-0
for (x in 0:LSC_1) {
for (y in 0:LSC_2) {
beta_biv = dbvpois(x, y, lamb_1_out, lamb_2_out, lamb_3_out)
result=result+beta_biv
}}
ARL1=round(1/(1-result) ,2) #"ARL1";ARL1
kable(round(data.frame(shiftx,shifty,lamb_1_out, lamb_2_out, lamb_3_out, lamb_x, lamb_y, ro, ARL1), digits = 5),format = "pandoc")
shiftx shifty lamb_1_out lamb_2_out lamb_3_out lamb_x lamb_y ro ARL1
------- ------- ----------- ----------- ----------- ------- ------- ---- -------
1.00 1.00 1.00000 1.00000 1.00000 2.0 2.0 0.5 477.97
1.00 1.25 0.88197 1.38197 1.11803 2.0 2.5 0.5 195.41
1.00 1.50 0.77526 1.77526 1.22474 2.0 3.0 0.5 79.29
1.00 1.75 0.67712 2.17712 1.32288 2.0 3.5 0.5 36.67
1.00 2.00 0.58579 2.58579 1.41421 2.0 4.0 0.5 19.42
1.25 1.25 1.25000 1.25000 1.25000 2.5 2.5 0.5 125.99
1.25 1.50 1.13069 1.63069 1.36931 2.5 3.0 0.5 66.18
1.25 1.75 1.02098 2.02098 1.47902 2.5 3.5 0.5 34.05
1.25 2.00 0.91886 2.41886 1.58114 2.5 4.0 0.5 18.81
1.50 1.50 1.50000 1.50000 1.50000 3.0 3.0 0.5 46.03
1.50 1.75 1.37982 1.87982 1.62018 3.0 3.5 0.5 28.41
1.50 2.00 1.26795 2.26795 1.73205 3.0 4.0 0.5 17.22
2.00 2.00 2.00000 2.00000 2.00000 4.0 4.0 0.5 11.34
Correlation = 0.70
#in control
lamb_1_in <- 1
lamb_2_in <- 1
lamb_3_in <- 2.333333
lamb_x <- lamb_1_in+lamb_3_in
lamb_y <- lamb_2_in+lamb_3_in
LSC_1=qpois(0.0027,lower.tail = F,lamb_x); "LSC_1"; LSC_1
[1] "LSC_1"
[1] 9
LSC_2=qpois(0.0027,lower.tail = F,lamb_y); "LSC_2"; LSC_2
[1] "LSC_2"
[1] 9
LIC_1=LIC_2=0
result<-0
for (x in 0:LSC_1) {
for (y in 0:LSC_2) {
beta_biv = dbvpois(x, y, lamb_1_in, lamb_2_in, lamb_3_in)
# print(beta_biv)
result=result+beta_biv
}}
ARLo=1/(1-result); "ARLo"; ARLo
[1] "ARLo"
[1] 242.1556
# shift
lamb_1_out = c(1,0.7245875,0.4755954,0.2466236,0.0335018,1.2500000,0.9716186,0.7156204,0.4773430,1.5000000,1.2195680,0.9585484,2.0000000)
lamb_2_out = c(1,1.5579210,2.1422620,2.7466240,3.3668350,1.2500000,1.8049520,2.3822870,2.9773430,1.5000000,2.0529010,2.6252150,2.0000000)
lamb_3_out = c(2.3333,2.6087460,2.8577380,3.0867100,3.2998310,2.9166660,3.1950480,3.4510460,3.6893240,3.5000000,3.7804320,4.0414520,4.6666660)
lamb_x <- lamb_1_out+lamb_3_out
lamb_y <- lamb_2_out+lamb_3_out
ro <- lamb_3_out/sqrt((lamb_1_out+lamb_3_out)*(lamb_2_out+lamb_3_out))
shiftx = lamb_x/(lamb_1_in+lamb_3_in)
shifty = lamb_y/(lamb_2_in+lamb_3_in)
result<-0
for (x in 0:LSC_1) {
for (y in 0:LSC_2) {
beta_biv = dbvpois(x, y, lamb_1_out, lamb_2_out, lamb_3_out)
result=result+beta_biv
}}
ARL1=round(1/(1-result) ,2) #"ARL1";ARL1
kable(round(data.frame(shiftx,shifty,lamb_1_out, lamb_2_out, lamb_3_out, lamb_x, lamb_y, ro, ARL1), digits = 5),format = "pandoc")
shiftx shifty lamb_1_out lamb_2_out lamb_3_out lamb_x lamb_y ro ARL1
-------- -------- ----------- ----------- ----------- -------- -------- ---- -------
0.99999 0.99999 1.00000 1.00000 2.33330 3.33330 3.33330 0.7 242.17
1.00000 1.25000 0.72459 1.55792 2.60875 3.33333 4.16667 0.7 85.61
1.00000 1.50000 0.47560 2.14226 2.85774 3.33333 5.00000 0.7 30.94
1.00000 1.75000 0.24662 2.74662 3.08671 3.33333 5.83333 0.7 13.69
1.00000 2.00000 0.03350 3.36684 3.29983 3.33333 6.66667 0.7 7.28
1.25000 1.25000 1.25000 1.25000 2.91667 4.16667 4.16667 0.7 56.17
1.25000 1.50000 0.97162 1.80495 3.19505 4.16667 5.00000 0.7 27.45
1.25000 1.75000 0.71562 2.38229 3.45105 4.16667 5.83333 0.7 13.29
1.25000 2.00000 0.47734 2.97734 3.68932 4.16667 6.66667 0.7 7.23
1.50000 1.50000 1.50000 1.50000 3.50000 5.00000 5.00000 0.7 19.50
1.50000 1.75000 1.21957 2.05290 3.78043 5.00000 5.83333 0.7 11.70
1.50000 2.00000 0.95855 2.62521 4.04145 5.00000 6.66667 0.7 6.94
2.00000 2.00000 2.00000 2.00000 4.66667 6.66667 6.66667 0.7 4.95
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIDJDICBjaGFydCAgLSBhc3N1bWluZyB0aGF0IHRoZSB2YXJpYWJsZXMgWCBhbmQgWSBhcmUgZGVwZW5kZW50LiAgKEFydGlnbyBMZWUgZSBDb3N0YV8yMDA5KQ0KYGBge3J9DQpsaWJyYXJ5KGV4dHJhRGlzdHIpDQpsaWJyYXJ5KGtuaXRyKQ0KYGBgDQoNCiMgQ29ycmVsYXRpb24gPSAwLjMwDQpgYGB7cn0NCiNpbiBjb250cm9sDQpsYW1iXzFfaW4gPC0gMQ0KbGFtYl8yX2luIDwtIDENCmxhbWJfM19pbiA8LSAwLjQyODU3MTQgIA0KbGFtYl94IDwtIGxhbWJfMV9pbitsYW1iXzNfaW4NCmxhbWJfeSA8LSBsYW1iXzJfaW4rbGFtYl8zX2luDQoNCkxTQ18xPXFwb2lzKDAuMDAyNyxsb3dlci50YWlsID0gRixsYW1iX3gpOyAiTFNDXzEiOyBMU0NfMQ0KTFNDXzI9cXBvaXMoMC4wMDI3LGxvd2VyLnRhaWwgPSBGLGxhbWJfeSk7ICJMU0NfMiI7IExTQ18yDQpMSUNfMT1MSUNfMj0wDQoNCnJlc3VsdDwtMA0KZm9yICh4IGluIDA6TFNDXzEpIHsNCiAgZm9yICh5IGluIDA6TFNDXzIpIHsNCiAgYmV0YV9iaXYgPSBkYnZwb2lzKHgsIHksIGxhbWJfMV9pbiwgbGFtYl8yX2luLCBsYW1iXzNfaW4pDQojICBwcmludChiZXRhX2JpdikNCiAgcmVzdWx0PXJlc3VsdCtiZXRhX2Jpdg0KICB9fQ0KQVJMbz0xLygxLXJlc3VsdCk7ICJBUkxvIjsgQVJMbw0KDQojIHNoaWZ0IA0KbGFtYl8xX291dCA9IGMoMSwwLjk0OTQxMTQsMC45MDM2ODE0LDAuODYxNjI0NCwwLjgyMjQ3OTQsMS4yNTAwMDAwLDEuMTk4ODY4MCwxLjE1MTg0ODAsMS4xMDgwODMwLDEuNTAwMDAwMCwxLjQ0ODQ5MjAsMS40MDA1NTAwLDIuMDAwMDAwMCkNCmxhbWJfMl9vdXQgPSBjKDEsMS4zMDY1NTQwLDEuNjE3OTY3MCwxLjkzMzA1MzAsMi4yNTEwNTEwLDEuMjUwMDAwMCwxLjU1NjAxMTAsMS44NjYxMzQwLDIuMTc5NTEyMCwxLjUwMDAwMDAsMS44MDU2MzUwLDIuMTE0ODM1MCwyLjAwMDAwMDApDQpsYW1iXzNfb3V0ID0gYygwLjQyODU3MTQsMC40NzkxNjAwLDAuNTI0ODkwMCwwLjU2Njk0NzAsMC42MDYwOTIwLDAuNTM1NzE0MCwwLjU4Njg0NjAsMC42MzM4NjYwLDAuNjc3NjMxMCwwLjY0Mjg1NzAsMC42OTQzNjUwLDAuNzQyMzA3NSwwLjg1NzE0MjkpDQpsYW1iX3ggPC0gbGFtYl8xX291dCtsYW1iXzNfb3V0DQpsYW1iX3kgPC0gbGFtYl8yX291dCtsYW1iXzNfb3V0DQpybyA8LSBsYW1iXzNfb3V0L3NxcnQoKGxhbWJfMV9vdXQrbGFtYl8zX291dCkqKGxhbWJfMl9vdXQrbGFtYl8zX291dCkpDQoNCnNoaWZ0eCA9IGxhbWJfeC8obGFtYl8xX2luK2xhbWJfM19pbikNCnNoaWZ0eSA9IGxhbWJfeS8obGFtYl8yX2luK2xhbWJfM19pbikNCg0KcmVzdWx0PC0wDQpmb3IgKHggaW4gMDpMU0NfMSkgew0KICBmb3IgKHkgaW4gMDpMU0NfMikgew0KICBiZXRhX2JpdiA9IGRidnBvaXMoeCwgeSwgbGFtYl8xX291dCwgbGFtYl8yX291dCwgbGFtYl8zX291dCkNCiAgcmVzdWx0PXJlc3VsdCtiZXRhX2Jpdg0KICB9fQ0KQVJMMT1yb3VuZCgxLygxLXJlc3VsdCkgLDIpICMiQVJMMSI7QVJMMQ0KDQprYWJsZShyb3VuZChkYXRhLmZyYW1lKHNoaWZ0eCxzaGlmdHksbGFtYl8xX291dCwgbGFtYl8yX291dCwgbGFtYl8zX291dCwgbGFtYl94LCBsYW1iX3ksIHJvLCBBUkwxKSwgZGlnaXRzID0gNSksZm9ybWF0ID0gInBhbmRvYyIpDQpgYGANCg0KDQojIENvcnJlbGF0aW9uID0gMC41MA0KYGBge3J9DQojaW4gY29udHJvbA0KbGFtYl8xX2luIDwtIDENCmxhbWJfMl9pbiA8LSAxDQpsYW1iXzNfaW4gPC0gMQ0KbGFtYl94IDwtIGxhbWJfMV9pbitsYW1iXzNfaW4NCmxhbWJfeSA8LSBsYW1iXzJfaW4rbGFtYl8zX2luDQoNCkxTQ18xPXFwb2lzKDAuMDAyNyxsb3dlci50YWlsID0gRixsYW1iX3gpOyAiTFNDXzEiOyBMU0NfMQ0KTFNDXzI9cXBvaXMoMC4wMDI3LGxvd2VyLnRhaWwgPSBGLGxhbWJfeSk7ICJMU0NfMiI7IExTQ18yDQpMSUNfMT1MSUNfMj0wDQoNCnJlc3VsdDwtMA0KZm9yICh4IGluIDA6TFNDXzEpIHsNCiAgZm9yICh5IGluIDA6TFNDXzIpIHsNCiAgYmV0YV9iaXYgPSBkYnZwb2lzKHgsIHksIGxhbWJfMV9pbiwgbGFtYl8yX2luLCBsYW1iXzNfaW4pDQojICBwcmludChiZXRhX2JpdikNCiAgcmVzdWx0PXJlc3VsdCtiZXRhX2Jpdg0KICB9fQ0KQVJMbz0xLygxLXJlc3VsdCk7ICJBUkxvIjsgQVJMbw0KDQojIHNoaWZ0IA0KbGFtYl8xX291dCA9IGMoMSwwLjg4MTk2NjAsMC43NzUyNTUxLDAuNjc3MTI0NCwwLjU4NTc4NjUsMS4yNTAwMDAwLDEuMTMwNjk0MCwxLjAyMDk4MDAsMC45MTg4NjEzLDEuNTAwMDAwMCwxLjM3OTgxNTAsMS4yNjc5NDkwLDIuMDAwMDAwMCkNCmxhbWJfMl9vdXQgPSBjKDEsMS4zODE5NjYwLDEuNzc1MjU1MCwyLjE3NzEyNDAsMi41ODU3ODcwLDEuMjUwMDAwMCwxLjYzMDY5NDAsMi4wMjA5ODAwLDIuNDE4ODYxMCwxLjUwMDAwMDAsMS44Nzk4MTUwLDIuMjY3OTQ5MCwyLjAwMDAwMDApDQpsYW1iXzNfb3V0ID0gYygxLjAwMDAsMS4xMTgwMzQwLDEuMjI0NzQ1MCwxLjMyMjg3NjAsMS40MTQyMTQwLDEuMjUwMDAwMCwxLjM2OTMwNjAsMS40NzkwMjAwLDEuNTgxMTM5MCwxLjUwMDAwMDAsMS42MjAxODUwLDEuNzMyMDUxMCwyLjAwMDAwMDApDQpsYW1iX3ggPC0gbGFtYl8xX291dCtsYW1iXzNfb3V0DQpsYW1iX3kgPC0gbGFtYl8yX291dCtsYW1iXzNfb3V0DQpybyA8LSBsYW1iXzNfb3V0L3NxcnQoKGxhbWJfMV9vdXQrbGFtYl8zX291dCkqKGxhbWJfMl9vdXQrbGFtYl8zX291dCkpDQoNCnNoaWZ0eCA9IGxhbWJfeC8obGFtYl8xX2luK2xhbWJfM19pbikNCnNoaWZ0eSA9IGxhbWJfeS8obGFtYl8yX2luK2xhbWJfM19pbikNCg0KcmVzdWx0PC0wDQpmb3IgKHggaW4gMDpMU0NfMSkgew0KICBmb3IgKHkgaW4gMDpMU0NfMikgew0KICBiZXRhX2JpdiA9IGRidnBvaXMoeCwgeSwgbGFtYl8xX291dCwgbGFtYl8yX291dCwgbGFtYl8zX291dCkNCiAgcmVzdWx0PXJlc3VsdCtiZXRhX2Jpdg0KICB9fQ0KQVJMMT1yb3VuZCgxLygxLXJlc3VsdCkgLDIpICMiQVJMMSI7QVJMMQ0KDQprYWJsZShyb3VuZChkYXRhLmZyYW1lKHNoaWZ0eCxzaGlmdHksbGFtYl8xX291dCwgbGFtYl8yX291dCwgbGFtYl8zX291dCwgbGFtYl94LCBsYW1iX3ksIHJvLCBBUkwxKSwgZGlnaXRzID0gNSksZm9ybWF0ID0gInBhbmRvYyIpDQpgYGANCg0KDQojIENvcnJlbGF0aW9uID0gMC43MA0KYGBge3J9DQojaW4gY29udHJvbA0KbGFtYl8xX2luIDwtIDENCmxhbWJfMl9pbiA8LSAxDQpsYW1iXzNfaW4gPC0gMi4zMzMzMzMNCmxhbWJfeCA8LSBsYW1iXzFfaW4rbGFtYl8zX2luDQpsYW1iX3kgPC0gbGFtYl8yX2luK2xhbWJfM19pbg0KDQpMU0NfMT1xcG9pcygwLjAwMjcsbG93ZXIudGFpbCA9IEYsbGFtYl94KTsgIkxTQ18xIjsgTFNDXzENCkxTQ18yPXFwb2lzKDAuMDAyNyxsb3dlci50YWlsID0gRixsYW1iX3kpOyAiTFNDXzIiOyBMU0NfMg0KTElDXzE9TElDXzI9MA0KDQpyZXN1bHQ8LTANCmZvciAoeCBpbiAwOkxTQ18xKSB7DQogIGZvciAoeSBpbiAwOkxTQ18yKSB7DQogIGJldGFfYml2ID0gZGJ2cG9pcyh4LCB5LCBsYW1iXzFfaW4sIGxhbWJfMl9pbiwgbGFtYl8zX2luKQ0KIyAgcHJpbnQoYmV0YV9iaXYpDQogIHJlc3VsdD1yZXN1bHQrYmV0YV9iaXYNCiAgfX0NCkFSTG89MS8oMS1yZXN1bHQpOyAiQVJMbyI7IEFSTG8NCg0KIyBzaGlmdCANCmxhbWJfMV9vdXQgPSBjKDEsMC43MjQ1ODc1LDAuNDc1NTk1NCwwLjI0NjYyMzYsMC4wMzM1MDE4LDEuMjUwMDAwMCwwLjk3MTYxODYsMC43MTU2MjA0LDAuNDc3MzQzMCwxLjUwMDAwMDAsMS4yMTk1NjgwLDAuOTU4NTQ4NCwyLjAwMDAwMDApDQpsYW1iXzJfb3V0ID0gYygxLDEuNTU3OTIxMCwyLjE0MjI2MjAsMi43NDY2MjQwLDMuMzY2ODM1MCwxLjI1MDAwMDAsMS44MDQ5NTIwLDIuMzgyMjg3MCwyLjk3NzM0MzAsMS41MDAwMDAwLDIuMDUyOTAxMCwyLjYyNTIxNTAsMi4wMDAwMDAwKQ0KbGFtYl8zX291dCA9IGMoMi4zMzMzLDIuNjA4NzQ2MCwyLjg1NzczODAsMy4wODY3MTAwLDMuMjk5ODMxMCwyLjkxNjY2NjAsMy4xOTUwNDgwLDMuNDUxMDQ2MCwzLjY4OTMyNDAsMy41MDAwMDAwLDMuNzgwNDMyMCw0LjA0MTQ1MjAsNC42NjY2NjYwKQ0KbGFtYl94IDwtIGxhbWJfMV9vdXQrbGFtYl8zX291dA0KbGFtYl95IDwtIGxhbWJfMl9vdXQrbGFtYl8zX291dA0Kcm8gPC0gbGFtYl8zX291dC9zcXJ0KChsYW1iXzFfb3V0K2xhbWJfM19vdXQpKihsYW1iXzJfb3V0K2xhbWJfM19vdXQpKQ0KDQpzaGlmdHggPSBsYW1iX3gvKGxhbWJfMV9pbitsYW1iXzNfaW4pDQpzaGlmdHkgPSBsYW1iX3kvKGxhbWJfMl9pbitsYW1iXzNfaW4pDQoNCnJlc3VsdDwtMA0KZm9yICh4IGluIDA6TFNDXzEpIHsNCiAgZm9yICh5IGluIDA6TFNDXzIpIHsNCiAgYmV0YV9iaXYgPSBkYnZwb2lzKHgsIHksIGxhbWJfMV9vdXQsIGxhbWJfMl9vdXQsIGxhbWJfM19vdXQpDQogIHJlc3VsdD1yZXN1bHQrYmV0YV9iaXYNCiAgfX0NCkFSTDE9cm91bmQoMS8oMS1yZXN1bHQpICwyKSAjIkFSTDEiO0FSTDENCg0Ka2FibGUocm91bmQoZGF0YS5mcmFtZShzaGlmdHgsc2hpZnR5LGxhbWJfMV9vdXQsIGxhbWJfMl9vdXQsIGxhbWJfM19vdXQsIGxhbWJfeCwgbGFtYl95LCBybywgQVJMMSksIGRpZ2l0cyA9IDUpLGZvcm1hdCA9ICJwYW5kb2MiKQ0KYGBgDQo=