Problem 7.4

rm(list = ls())
setwd("~/Documents/Stats 525/Code")
Grocery <- read.delim("~/Documents/Stats 525/DATA/CH06PR09.txt", header=FALSE)
names(Grocery)<-c("hours", "cases", "labor", "holiday")
attach(Grocery)
Y <- hours
X1 <- cases
X2 <- labor
X3 <- holiday

(a)

#anova tables for SSR(X1), SSR(X3|X1), SSR(X2|X1, X3)
mod123 = lm(Y~X1+X2+X3)
anova(mod123)
Analysis of Variance Table

Response: Y
          Df  Sum Sq Mean Sq F value    Pr(>F)    
X1         1  136366  136366  6.6417   0.01309 *  
X2         1    5726    5726  0.2789   0.59987    
X3         1 2034514 2034514 99.0905 2.941e-13 ***
Residuals 48  985530   20532                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#SSR(X1) = 136366
#SSR(X3|X1) = 2033565
#SSR(X2|X1,X3) = 6675

(b)

Hypothesis: H0: B2 = 0 vs HA: B2 != 0 SSR(X2|X1,X3) = 667, SSE(X1,X2,X3) = 985530 Decision Rule: Reject H0 if Fstar > Fobs Fobs = F(0.95, 1, 48) = 4.04 Fstar = (6675/1)/(985530/(52-4)) = 0.325 Conclusion: Fstar < Fobs –> fail to reject H0 Pvalue = 0.57123

qf(0.95, 1, 48)
[1] 4.042652

(c)

anova(mod123)
Analysis of Variance Table

Response: Y
          Df  Sum Sq Mean Sq F value    Pr(>F)    
X1         1  136366  136366  6.6417   0.01309 *  
X2         1    5726    5726  0.2789   0.59987    
X3         1 2034514 2034514 99.0905 2.941e-13 ***
Residuals 48  985530   20532                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
mod213 = lm(Y~X2+X1+X3)
anova(mod213)
Analysis of Variance Table

Response: Y
          Df  Sum Sq Mean Sq F value    Pr(>F)    
X2         1   11395   11395  0.5550    0.4599    
X1         1  130697  130697  6.3656    0.0150 *  
X3         1 2034514 2034514 99.0905 2.941e-13 ***
Residuals 48  985530   20532                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

SSR(X1)+SSR(X2|X1) = 136366 + 5726 = 142092 SSR(X2)+SSR(X1|X2) = 11395 + 130697 = 142092 Yes, the two are equal and always will be.

Problem 7.6

Hypothesis: H0: Beta2 = beta3 = 0 HA: At least one Beta is not equal to zero Decision Rule: Reject H0 if the P-value is < 0.025 P-value = 0.02216 Conclusion: P-value < 0.025 so we reject H0 at alpha = 0.025 We cannot drop X2 and X3 and obtain a better model than the full model

rm(list = ls())
setwd("~/Documents/Stats 525/Code")
patientsatisfaction <- read.table("~/Documents/Stats 525/(MODIFIED) data sets for HW problems assigned from textbook-20210325/CH06PR15.txt", quote="\"", comment.char="")
names(patientsatisfaction)<-c("satisfaction", "age", "severity", "anxiety")
attach(patientsatisfaction)
Y<-patientsatisfaction$satisfaction
X1<-patientsatisfaction$age
X2<-patientsatisfaction$severity
X3<-patientsatisfaction$anxiety
mod_full = lm(Y~X1+X2+X3)
mod_reduced = lm(Y ~ X1)
anova(mod_reduced, mod_full)
Analysis of Variance Table

Model 1: Y ~ X1
Model 2: Y ~ X1 + X2 + X3
  Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
1     44 5093.9                              
2     42 4248.8  2    845.07 4.1768 0.02216 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Problem 7.11 (a)

X1 = c(4, 4, 4, 4, 6, 6, 6, 6)
X2 = c(2, 2, 3, 3, 2, 2, 3, 3)
Y = c(42, 39, 48, 51, 49, 53, 61, 60)
df <- cbind(Y, X1, X2)
n = length(Y)
X = cbind(rep(1,n),X1)
tXX = t(X)%*%X
tXY = t(X)%*%Y
tYY = t(Y)%*%Y
b = solve(tXX)%*%tXY
J = matrix(1,8,8)
SSR = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y
SSTO = tYY - (1/n) * t(Y) %*% J %*% Y
SSR/SSTO
          [,1]
[1,] 0.5504614
X1 = c(4, 4, 4, 4, 6, 6, 6, 6)
X2 = c(2, 2, 3, 3, 2, 2, 3, 3)
Y = c(42, 39, 48, 51, 49, 53, 61, 60)
df <- cbind(Y, X1, X2)
n = length(Y)
X = cbind(rep(1,n),X2)
tXX = t(X)%*%X
tXY = t(X)%*%Y
tYY = t(Y)%*%Y
b = solve(tXX)%*%tXY
J = matrix(1,8,8)
SSR = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y
SSTO = tYY - (1/n) * t(Y) %*% J %*% Y
SSR/SSTO
          [,1]
[1,] 0.4075618
n = length(X2)
X = cbind(rep(1,n),X1)
tXX = t(X)%*%X
tXY = t(X)%*%Y
tYY = t(Y)%*%Y

b = solve(tXX)%*%tXY
J = matrix(1,8,8)

SSR = t(b) %*% t(X) %*% Y - (1 / n) * t(X2) %*% J %*% X2
SSTO = tYY - (1/n) * t(X2) %*% J %*% X2
SSR/SSTO
          [,1]
[1,] 0.9908689
#R2Y12
#total variance
n = length(Y)
X = cbind(rep(1,n),X1,X2)
tXX = t(X)%*%X
tXY = t(X)%*%Y
tYY = t(Y)%*%Y
b = solve(tXX)%*%tXY
J = matrix(1,8,8)

SSRX1X2 = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y

X = cbind(rep(1,n),X2)
tXX = t(X)%*%X
tXY = t(X)%*%Y
tYY = t(Y)%*%Y
b = solve(tXX)%*%tXY
SSRX2 = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y

Yhat = X%*%b
e = Y - Yhat

SSEX2 = t(e) %*% e
(SSRX1X2 - SSRX2)/SSEX2
          [,1]
[1,] 0.9291457
#R2Y12
n = length(Y)
X = cbind(rep(1,n), X2, X1)
tXX = t(X)%*%X
tXY = t(X)%*%Y
tYY = t(Y)%*%Y
b = solve(tXX)%*%tXY
J = matrix(1, 8, 8)
SSR_X2_X1 = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y

X = cbind(rep(1,n), X1)
tXX = t(X)%*%X
tXY = t(X)%*%Y
tYY = t(Y)%*%Y
b = solve(tXX)%*%tXY
SSR_X1 = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y

Y_hat = X%*%b 
e = Y - Y_hat

SSE_X1 = t(e) %*% e

(SSR_X2_X1 - SSR_X1)/SSE_X1
          [,1]
[1,] 0.9066225
n = length(Y)
X = cbind(rep(1,n), X1, X2)
tXX = t(X)%*%X
tXY = t(X)%*%Y
tYY = t(Y)%*%Y

b = solve(tXX)%*%tXY
J = matrix(1, 8, 8)

SSR = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y 
SSTO = tYY - (1/n) * t(Y) %*% J %*% Y

SSR/SSTO
          [,1]
[1,] 0.9580232

(b) Yes, the correlation between X1 and X2 is zero.

Problem 7.26 (a)

mod = lm(Y~X1+X2)
mod

Call:
lm(formula = Y ~ X1 + X2)

Coefficients:
(Intercept)           X1           X2  
   156.6719      -1.2677      -0.9208  

(b)

mod = lm(Y~X1+X2+X3)
mod

Call:
lm(formula = Y ~ X1 + X2 + X3)

Coefficients:
(Intercept)           X1           X2           X3  
    158.491       -1.142       -0.442      -13.470  

Yhat = 158.491 - 1.142X1 - 0.442X2 - 13.47X3 These coefficients are pretty close between 6.15c and parts a and b.

(c) SSR(X1) = 8275.389 SSR(X1 | X3) = 3483.891 SSR(X2) = 4860.26 SSR(X2 | X3) = 707.9971 Neither expressions are equal.

n = length(Y)
X = cbind(rep(1,n), X1)
tXX = t(X)%*%X
tXY = t(X)%*%Y
tYY = t(Y)%*%Y
 
b = solve(tXX)%*%tXY
J = matrix(1, n, n) 

SSR_X1 = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y

X = cbind(rep(1,n), X1, X3)

tXX = t(X)%*%X
tXY = t(X)%*%Y 
tYY = t(Y)%*%Y

b = solve(tXX)%*%tXY

SSR_X1_X3 = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y

X = cbind(rep(1,n), X3)
tXX = t(X)%*%X
tXY = t(X)%*%Y 
tYY = t(Y)%*%Y

b = solve(tXX)%*%tXY
SSR_X3 = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y 
SSR_X1
         [,1]
[1,] 8275.389
SSR_X1_X3 - SSR_X3
         [,1]
[1,] 3483.891
n = length(Y)
#Create a n by 3 matrix with 1's in the first column 
X = cbind(rep(1,n), X2)
#t(X) is transpose. %*% is matrix multiplication
tXX = t(X)%*%X
tXY = t(X)%*%Y
tYY = t(Y)%*%Y
#solve(tXX) is the inverse of the matrix tXX. 
b = solve(tXX)%*%tXY
J = matrix(1, n, n) #J
SSR_X2 = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y
#Create a n by 3 matrix with 1's in the first column 
X = cbind(rep(1,n), X2, X3)
#t(X) is transpose. %*% is matrix multiplication
tXX = t(X)%*%X
tXY = t(X)%*%Y 
tYY = t(Y)%*%Y
#solve(tXX) is the inverse of the matrix tXX. 
b = solve(tXX)%*%tXY
SSR_X2_X3 = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y
#Create a n by 3 matrix with 1's in the first column 
X = cbind(rep(1,n), X3)
#t(X) is transpose. %*% is matrix multiplication
tXX = t(X)%*%X
tXY = t(X)%*%Y 
tYY = t(Y)%*%Y
#solve(tXX) is the inverse of the matrix tXX. 
b = solve(tXX)%*%tXY
SSR_X3 = t(b) %*% t(X) %*% Y - (1 / n) * t(Y) %*% J %*% Y 
SSR_X2
        [,1]
[1,] 4860.26
 SSR_X2_X3 - SSR_X3
         [,1]
[1,] 707.9971

(d) r12 = 0.5680, r13 = 0.5697, r23 = 0.6705. This supports that there are some dependencies between some predicotr variables.

 round(cor(patientsatisfaction), 4)
             satisfaction     age severity anxiety
satisfaction       1.0000 -0.7868  -0.6029 -0.6446
age               -0.7868  1.0000   0.5680  0.5697
severity          -0.6029  0.5680   1.0000  0.6705
anxiety           -0.6446  0.5697   0.6705  1.0000
LS0tCnRpdGxlOiAnVGhlcmVzYSBDYXJvdGVudXRvOiBIVyM4LCBDSDcnCm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0CiAgd29yZF9kb2N1bWVudDogZGVmYXVsdAogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKLS0tCgoqKipQcm9ibGVtIDcuNCoqKgpgYGB7cn0Kcm0obGlzdCA9IGxzKCkpCnNldHdkKCJ+L0RvY3VtZW50cy9TdGF0cyA1MjUvQ29kZSIpCkdyb2NlcnkgPC0gcmVhZC5kZWxpbSgifi9Eb2N1bWVudHMvU3RhdHMgNTI1L0RBVEEvQ0gwNlBSMDkudHh0IiwgaGVhZGVyPUZBTFNFKQpuYW1lcyhHcm9jZXJ5KTwtYygiaG91cnMiLCAiY2FzZXMiLCAibGFib3IiLCAiaG9saWRheSIpCmF0dGFjaChHcm9jZXJ5KQpZIDwtIGhvdXJzClgxIDwtIGNhc2VzClgyIDwtIGxhYm9yClgzIDwtIGhvbGlkYXkKYGBgCioqKihhKSoqKgpgYGB7cn0KI2Fub3ZhIHRhYmxlcyBmb3IgU1NSKFgxKSwgU1NSKFgzfFgxKSwgU1NSKFgyfFgxLCBYMykKbW9kMTIzID0gbG0oWX5YMStYMitYMykKYW5vdmEobW9kMTIzKQojU1NSKFgxKSA9IDEzNjM2NgojU1NSKFgzfFgxKSA9IDIwMzM1NjUKI1NTUihYMnxYMSxYMykgPSA2Njc1CmBgYAoqKiooYikqKioKCkh5cG90aGVzaXM6CiAgSDA6IEIyID0gMCB2cyBIQTogQjIgIT0gMAogIFNTUihYMnxYMSxYMykgPSA2NjcsIFNTRShYMSxYMixYMykgPSA5ODU1MzAKRGVjaXNpb24gUnVsZTogCiAgUmVqZWN0IEgwIGlmIEZzdGFyID4gRm9icwogIEZvYnMgPSBGKDAuOTUsIDEsIDQ4KSA9IDQuMDQKICBGc3RhciA9ICg2Njc1LzEpLyg5ODU1MzAvKDUyLTQpKSA9IDAuMzI1CkNvbmNsdXNpb246IAogIEZzdGFyIDwgRm9icyAtLT4gZmFpbCB0byByZWplY3QgSDAKUHZhbHVlID0gMC41NzEyMwpgYGB7cn0KcWYoMC45NSwgMSwgNDgpCmBgYAoqKiooYykqKioKYGBge3J9CmFub3ZhKG1vZDEyMykKbW9kMjEzID0gbG0oWX5YMitYMStYMykKYW5vdmEobW9kMjEzKQpgYGAKClNTUihYMSkrU1NSKFgyfFgxKSA9IDEzNjM2NiArIDU3MjYgPSAxNDIwOTIKU1NSKFgyKStTU1IoWDF8WDIpID0gMTEzOTUgKyAxMzA2OTcgPSAxNDIwOTIKWWVzLCB0aGUgdHdvIGFyZSBlcXVhbCBhbmQgYWx3YXlzIHdpbGwgYmUuIAoKKioqUHJvYmxlbSA3LjYqKioKCkh5cG90aGVzaXM6IAogIEgwOiBCZXRhMiA9IGJldGEzID0gMAogIEhBOiBBdCBsZWFzdCBvbmUgQmV0YSBpcyBub3QgZXF1YWwgdG8gemVybwpEZWNpc2lvbiBSdWxlOiAKICBSZWplY3QgSDAgaWYgdGhlIFAtdmFsdWUgaXMgPCAwLjAyNQpQLXZhbHVlID0gMC4wMjIxNgpDb25jbHVzaW9uOiAKICBQLXZhbHVlIDwgMC4wMjUgc28gd2UgcmVqZWN0IEgwIGF0IGFscGhhID0gMC4wMjUKICBXZSBjYW5ub3QgZHJvcCBYMiBhbmQgWDMgYW5kIG9idGFpbiBhIGJldHRlciBtb2RlbCB0aGFuIHRoZSBmdWxsIG1vZGVsIAoKYGBge3J9CnJtKGxpc3QgPSBscygpKQpzZXR3ZCgifi9Eb2N1bWVudHMvU3RhdHMgNTI1L0NvZGUiKQpwYXRpZW50c2F0aXNmYWN0aW9uIDwtIHJlYWQudGFibGUoIn4vRG9jdW1lbnRzL1N0YXRzIDUyNS8oTU9ESUZJRUQpIGRhdGEgc2V0cyBmb3IgSFcgcHJvYmxlbXMgYXNzaWduZWQgZnJvbSB0ZXh0Ym9vay0yMDIxMDMyNS9DSDA2UFIxNS50eHQiLCBxdW90ZT0iXCIiLCBjb21tZW50LmNoYXI9IiIpCm5hbWVzKHBhdGllbnRzYXRpc2ZhY3Rpb24pPC1jKCJzYXRpc2ZhY3Rpb24iLCAiYWdlIiwgInNldmVyaXR5IiwgImFueGlldHkiKQphdHRhY2gocGF0aWVudHNhdGlzZmFjdGlvbikKWTwtcGF0aWVudHNhdGlzZmFjdGlvbiRzYXRpc2ZhY3Rpb24KWDE8LXBhdGllbnRzYXRpc2ZhY3Rpb24kYWdlClgyPC1wYXRpZW50c2F0aXNmYWN0aW9uJHNldmVyaXR5ClgzPC1wYXRpZW50c2F0aXNmYWN0aW9uJGFueGlldHkKbW9kX2Z1bGwgPSBsbShZflgxK1gyK1gzKQptb2RfcmVkdWNlZCA9IGxtKFkgfiBYMSkKYW5vdmEobW9kX3JlZHVjZWQsIG1vZF9mdWxsKQpgYGAKCioqKlByb2JsZW0gNy4xMSoqKgoqKiooYSkqKioKYGBge3J9ClgxID0gYyg0LCA0LCA0LCA0LCA2LCA2LCA2LCA2KQpYMiA9IGMoMiwgMiwgMywgMywgMiwgMiwgMywgMykKWSA9IGMoNDIsIDM5LCA0OCwgNTEsIDQ5LCA1MywgNjEsIDYwKQpkZiA8LSBjYmluZChZLCBYMSwgWDIpCgpuID0gbGVuZ3RoKFkpClggPSBjYmluZChyZXAoMSxuKSxYMSkKdFhYID0gdChYKSUqJVgKdFhZID0gdChYKSUqJVkKdFlZID0gdChZKSUqJVkKYiA9IHNvbHZlKHRYWCklKiV0WFkKSiA9IG1hdHJpeCgxLDgsOCkKU1NSID0gdChiKSAlKiUgdChYKSAlKiUgWSAtICgxIC8gbikgKiB0KFkpICUqJSBKICUqJSBZClNTVE8gPSB0WVkgLSAoMS9uKSAqIHQoWSkgJSolIEogJSolIFkKU1NSL1NTVE8KI1IyWTEKI3RvdGFsIHZhcmlhbmNlIG9mIFgxCmBgYApgYGB7cn0KbiA9IGxlbmd0aChZKQpYID0gY2JpbmQocmVwKDEsbiksWDIpCnRYWCA9IHQoWCklKiVYCnRYWSA9IHQoWCklKiVZCnRZWSA9IHQoWSklKiVZCmIgPSBzb2x2ZSh0WFgpJSoldFhZCkogPSBtYXRyaXgoMSw4LDgpClNTUiA9IHQoYikgJSolIHQoWCkgJSolIFkgLSAoMSAvIG4pICogdChZKSAlKiUgSiAlKiUgWQpTU1RPID0gdFlZIC0gKDEvbikgKiB0KFkpICUqJSBKICUqJSBZClNTUi9TU1RPCiNSMlkyCiN0b3RhbCB2YXJpYW5jZSBvZiBYMgpgYGAKYGBge3J9Cm4gPSBsZW5ndGgoWDIpClggPSBjYmluZChyZXAoMSxuKSxYMSkKdFhYID0gdChYKSUqJVgKdFhZID0gdChYKSUqJVkKdFlZID0gdChZKSUqJVkKCmIgPSBzb2x2ZSh0WFgpJSoldFhZCkogPSBtYXRyaXgoMSw4LDgpCgpTU1IgPSB0KGIpICUqJSB0KFgpICUqJSBZIC0gKDEgLyBuKSAqIHQoWDIpICUqJSBKICUqJSBYMgpTU1RPID0gdFlZIC0gKDEvbikgKiB0KFgyKSAlKiUgSiAlKiUgWDIKU1NSL1NTVE8KI1IyWTEyCiN0b3RhbCB2YXJpYW5jZSBvZiBYMSBhbmQgWDIKYGBgCmBgYHtyfQpuID0gbGVuZ3RoKFkpClggPSBjYmluZChyZXAoMSxuKSxYMSxYMikKdFhYID0gdChYKSUqJVgKdFhZID0gdChYKSUqJVkKdFlZID0gdChZKSUqJVkKYiA9IHNvbHZlKHRYWCklKiV0WFkKSiA9IG1hdHJpeCgxLDgsOCkKClNTUlgxWDIgPSB0KGIpICUqJSB0KFgpICUqJSBZIC0gKDEgLyBuKSAqIHQoWSkgJSolIEogJSolIFkKClggPSBjYmluZChyZXAoMSxuKSxYMikKdFhYID0gdChYKSUqJVgKdFhZID0gdChYKSUqJVkKdFlZID0gdChZKSUqJVkKYiA9IHNvbHZlKHRYWCklKiV0WFkKU1NSWDIgPSB0KGIpICUqJSB0KFgpICUqJSBZIC0gKDEgLyBuKSAqIHQoWSkgJSolIEogJSolIFkKClloYXQgPSBYJSolYgplID0gWSAtIFloYXQKClNTRVgyID0gdChlKSAlKiUgZQooU1NSWDFYMiAtIFNTUlgyKS9TU0VYMgojUjJZMXwyCiN0b3RhbCB2YXJpYW5jZSBvZiBhZGRpdGlvbmFsIFgxIGdpdmVuIHByZXZpb3VzIFgyCmBgYApgYGB7cn0KbiA9IGxlbmd0aChZKQpYID0gY2JpbmQocmVwKDEsbiksIFgyLCBYMSkKdFhYID0gdChYKSUqJVgKdFhZID0gdChYKSUqJVkKdFlZID0gdChZKSUqJVkKYiA9IHNvbHZlKHRYWCklKiV0WFkKSiA9IG1hdHJpeCgxLCA4LCA4KQpTU1JfWDJfWDEgPSB0KGIpICUqJSB0KFgpICUqJSBZIC0gKDEgLyBuKSAqIHQoWSkgJSolIEogJSolIFkKClggPSBjYmluZChyZXAoMSxuKSwgWDEpCnRYWCA9IHQoWCklKiVYCnRYWSA9IHQoWCklKiVZCnRZWSA9IHQoWSklKiVZCmIgPSBzb2x2ZSh0WFgpJSoldFhZClNTUl9YMSA9IHQoYikgJSolIHQoWCkgJSolIFkgLSAoMSAvIG4pICogdChZKSAlKiUgSiAlKiUgWQoKWV9oYXQgPSBYJSolYiAKZSA9IFkgLSBZX2hhdAoKU1NFX1gxID0gdChlKSAlKiUgZQoKKFNTUl9YMl9YMSAtIFNTUl9YMSkvU1NFX1gxCiNSMlkyfDEKI3RvdGFsIHZhcmlhbmNlIG9mIGFkZGl0aW9uYWwgWDIgZ2l2ZW4gcHJldmlvdXMgWDEKYGBgCmBgYHtyfQpuID0gbGVuZ3RoKFkpClggPSBjYmluZChyZXAoMSxuKSwgWDEsIFgyKQp0WFggPSB0KFgpJSolWAp0WFkgPSB0KFgpJSolWQp0WVkgPSB0KFkpJSolWQoKYiA9IHNvbHZlKHRYWCklKiV0WFkKSiA9IG1hdHJpeCgxLCA4LCA4KQoKU1NSID0gdChiKSAlKiUgdChYKSAlKiUgWSAtICgxIC8gbikgKiB0KFkpICUqJSBKICUqJSBZIApTU1RPID0gdFlZIC0gKDEvbikgKiB0KFkpICUqJSBKICUqJSBZCgpTU1IvU1NUTwojUjIKI3RvdGFsIHZhcmlhbmNlCmBgYAoqKiooYikqKioKWWVzLCB0aGUgY29ycmVsYXRpb24gYmV0d2VlbiBYMSBhbmQgWDIgaXMgemVyby4gCgoqKipQcm9ibGVtIDcuMjYqKioKKioqKGEpKioqCmBgYHtyfQptb2QgPSBsbShZflgxK1gyKQptb2QKI1loYXQgPSAxNTYuNjcxOSAtIDEuMjY2NyhYMSkgLSAwLjkyMDgoWDIpCgpgYGAKKioqKGIpKioqCmBgYHtyfQptb2QgPSBsbShZflgxK1gyK1gzKQptb2QKYGBgClloYXQgPSAxNTguNDkxIC0gMS4xNDJYMSAtIDAuNDQyWDIgLSAxMy40N1gzClRoZXNlIGNvZWZmaWNpZW50cyBhcmUgcHJldHR5IGNsb3NlIGJldHdlZW4gNi4xNWMgYW5kIHBhcnRzIGEgYW5kIGIuIAoKKioqKGMpKioqClNTUihYMSkgPSA4Mjc1LjM4OSAKU1NSKFgxIHwgWDMpID0gMzQ4My44OTEKU1NSKFgyKSA9IDQ4NjAuMjYgClNTUihYMiB8IFgzKSA9IDcwNy45OTcxCk5laXRoZXIgZXhwcmVzc2lvbnMgYXJlIGVxdWFsLiAKYGBge3J9Cm4gPSBsZW5ndGgoWSkKWCA9IGNiaW5kKHJlcCgxLG4pLCBYMSkKdFhYID0gdChYKSUqJVgKdFhZID0gdChYKSUqJVkKdFlZID0gdChZKSUqJVkKIApiID0gc29sdmUodFhYKSUqJXRYWQpKID0gbWF0cml4KDEsIG4sIG4pIAoKU1NSX1gxID0gdChiKSAlKiUgdChYKSAlKiUgWSAtICgxIC8gbikgKiB0KFkpICUqJSBKICUqJSBZCgpYID0gY2JpbmQocmVwKDEsbiksIFgxLCBYMykKCnRYWCA9IHQoWCklKiVYCnRYWSA9IHQoWCklKiVZIAp0WVkgPSB0KFkpJSolWQoKYiA9IHNvbHZlKHRYWCklKiV0WFkKClNTUl9YMV9YMyA9IHQoYikgJSolIHQoWCkgJSolIFkgLSAoMSAvIG4pICogdChZKSAlKiUgSiAlKiUgWQoKWCA9IGNiaW5kKHJlcCgxLG4pLCBYMykKdFhYID0gdChYKSUqJVgKdFhZID0gdChYKSUqJVkgCnRZWSA9IHQoWSklKiVZCgpiID0gc29sdmUodFhYKSUqJXRYWQpTU1JfWDMgPSB0KGIpICUqJSB0KFgpICUqJSBZIC0gKDEgLyBuKSAqIHQoWSkgJSolIEogJSolIFkgClNTUl9YMQpgYGAKYGBge3J9ClNTUl9YMV9YMyAtIFNTUl9YMwpgYGAKYGBge3J9Cm4gPSBsZW5ndGgoWSkKWCA9IGNiaW5kKHJlcCgxLG4pLCBYMikKCnRYWCA9IHQoWCklKiVYCnRYWSA9IHQoWCklKiVZCnRZWSA9IHQoWSklKiVZCgpiID0gc29sdmUodFhYKSUqJXRYWQpKID0gbWF0cml4KDEsIG4sIG4pICNKClNTUl9YMiA9IHQoYikgJSolIHQoWCkgJSolIFkgLSAoMSAvIG4pICogdChZKSAlKiUgSiAlKiUgWQoKWCA9IGNiaW5kKHJlcCgxLG4pLCBYMiwgWDMpCgp0WFggPSB0KFgpJSolWAp0WFkgPSB0KFgpJSolWSAKdFlZID0gdChZKSUqJVkKCmIgPSBzb2x2ZSh0WFgpJSoldFhZClNTUl9YMl9YMyA9IHQoYikgJSolIHQoWCkgJSolIFkgLSAoMSAvIG4pICogdChZKSAlKiUgSiAlKiUgWQoKWCA9IGNiaW5kKHJlcCgxLG4pLCBYMykKCnRYWCA9IHQoWCklKiVYCnRYWSA9IHQoWCklKiVZIAp0WVkgPSB0KFkpJSolWQoKYiA9IHNvbHZlKHRYWCklKiV0WFkKU1NSX1gzID0gdChiKSAlKiUgdChYKSAlKiUgWSAtICgxIC8gbikgKiB0KFkpICUqJSBKICUqJSBZIApTU1JfWDIKCmBgYApgYGB7cn0KIFNTUl9YMl9YMyAtIFNTUl9YMwpgYGAKKioqKGQpKioqCnIxMiA9IDAuNTY4MCwgcjEzID0gMC41Njk3LCByMjMgPSAwLjY3MDUuIApUaGlzIHN1cHBvcnRzIHRoYXQgdGhlcmUgYXJlIHNvbWUgZGVwZW5kZW5jaWVzIGJldHdlZW4gc29tZSBwcmVkaWNvdHIgdmFyaWFibGVzLiAKYGBge3J9CnJvdW5kKGNvcihwYXRpZW50c2F0aXNmYWN0aW9uKSwgNCkKYGBgCgoKCgo=