Problema 3 - Teorema del Límite Central

Enunciado

Problema 3

Teorema del límite central

El Teorema del Límite Central es uno de los más importantes en la inferencia estadística y habla sobre la convergencia de los estimadores como la proporción muestral a la distribución normal. Algunos autores afirman que esta aproximación es bastante buena a partir del umbral n>30.

Nota

  • Funciones recomendadas : rbinom() , data.frame(), apply()
  • Entregable : enlace en RPubs con informe 3

Punto a

  • Realice una simulación en la cual genere una población de \(N = 1000\) (Lote), donde el porcentaje de individuos enfermas sea del \(50\%\). Se supondrán plantas.
# Item  a
# creation of the population sick/healthy 50%/50%
population = rep (c(0,1), each = 500) 
table(population)
## population
##   0   1 
## 500 500

Punto b

  • Genere una función que permita:
    • Obtener una muestra aleatoria de la población y
    • Calcule el estimador de la proporción muestral \(\hat{p}\) para un tamaño de muestra dado n.
# Item b
# Create a function to Obtain a random sample of the population  (example with 50 samples)
randomsample = function(n){
  s = sample(population, n, replace = TRUE)
  return (s)
}
# Calculate the estimator 'phat' for a given size of the sample.
# For this case, is the relation between the sick one agains the population

phat = function(n){
  s = randomsample(n)
  p = prop.table(table(s))
  names(p) = c("1-p", "phat")
  return(p[2]) # Return phat
}
#Let's try the functions for different sample sizes
v = c(10,30,50,75,100,200,500,1000,2000)
sapply(v, phat)
##      phat      phat      phat      phat      phat      phat      phat      phat 
## 0.3000000 0.3333333 0.3600000 0.4933333 0.4700000 0.4950000 0.5260000 0.4920000 
##      phat 
## 0.4905000

Punto c

  • Repita el escenario anterior (b) \(n = 500\) veces y analice los resultados en cuanto al comportamiento de los 500 resultados del estimador \(\hat{p}\).
    • ¿Qué tan simétricos o sesgados son los resultados obtenidos?
    • ¿Qué se puede observar en cuanto a la variabilidad?.
    • Realice en su informe un comentario sobre los resultados obtenidos.
# Item c
# Repeat the above with n = 500

graph = function(n){
  m = 500
  y = matrix(randomsample(n*m), ncol = n)
  phat = function(v){
  sum(v)/n
  }
  phat5 = apply(y, 1, phat)
  par(mfrow=c(2,2))
  hist(phat5)
  boxplot(phat5)
  qqnorm(phat5)
  return(phat5)
}
g = graph(5)
summary(g)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0000  0.4000  0.4000  0.5028  0.6000  1.0000
shapiro.test(g)
## 
##  Shapiro-Wilk normality test
## 
## data:  g
## W = 0.93082, p-value = 1.931e-14

Se ven espacios en la gráfica porque los datos no son continuos sino discretos. Los resultados se ven más simétricos que asimétricos, aunque están un poco más a la izquierda del gráfico, pero se nota que en los extremos hay mucho menos datos que hacia el centro del mismo. Tiene un valor p muy pequeño. Los resultados son poco sesgados, pero tienen mucha variabilidad dentro del rango.

Punto d

  • Repita los puntos b y c para tamaños de muestra \(n=5, 10, 15, 20, 30, 50, 60, 100, 200, 500\). Compare los resultados obtenidos para los diferentes tamaños de muestra en cuanto a la normalidad. Utilice pruebas de bondad y ajuste (shapiro wilks :shapiro.test()) y métodos gráficos (gráfico de normalidad: qqnorm()).
    • Comente en su informe los resultados obtenidos

Se puede comprobar con este comportamiento el Teorema del Límite Central, pues a medida que va aumentando el tamaño de la muestra, la distribución se hace más simétrica y tiene una distribución normal.

Punto e

Repita toda la simulación (puntos a – d), pero ahora para lotes con \(10\%\) de plantas enfermas y de nuevo para lotes con un \(90\%\) de plantas enfermas. Concluya sobre los resultados del ejercicio.

## population2
##   0   1 
## 900 100
##      phat      phat      phat      phat      phat      phat      phat      phat 
## 0.5000000 0.5666667 0.5400000 0.4133333 0.4300000 0.4900000 0.4820000 0.5420000 
##      phat 
## 0.4905000

Con cantidades pequeñas en las primeras muestras, se nota que la distribución no es normal, condición necesaria para poder validar el Teorema del Límite Central. A medida que aumenta el tamaño de la muestra, se ve que la distribución se comporta como una distribución normal. Se nota como la linea roja está sobre la mayoría de los puntos, que son valores de la muestra, lo que demuestra que se comporta como una distribución normal.

LS0tDQpzdWJ0aXRsZTogIkFjdGl2aWRhZCAyLiBNw6l0b2RvcyB5IFNpbXVsYWNpw7NuIg0KdGl0bGU6ICJQcm9ibGVtYSAzIg0KYXV0aG9yOiAiRW5yaXF1ZSBKb3PDqSBQZcOxYSB5IExlYW5kcm8gTXXDsW96Ig0KZGF0ZTogIjIwMjQtMDMtMDQiDQpvdXRwdXQ6ICANCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICB0b2M6IGZhbHNlDQogICAgdG9jX2RlcHRoOiA0DQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgY29sbGFwc2VkOiB0cnVlDQogICAgc21vb3RoX3Njcm9sbDogdHJ1ZQ0KICAgIHRoZW1lOiBmbGF0bHkNCiAgICBoaWdobGlnaHQ6IGthdGUNCiAgICBkZl9wcmludDogcGFnZWQNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQpudW1iZXItc2VjdGlvbnM6IHRydWUNCi0tLQ0KDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgZmlnLndpZHRoID0gNSwgZmlnLmhlaWdodCA9IDUpDQojUi52ZXJzaW9uDQppZighcmVxdWlyZU5hbWVzcGFjZSgiZ2dwbG90MiIsIHF1aWV0bHkgPSBUUlVFKSl7DQogIGluc3RhbGwucGFja2FnZXMoImdncGxvdDIiKQ0KfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KDQpzZXQuc2VlZCg2ODkpDQpgYGANCg0KIyMgUHJvYmxlbWEgMyAtIFRlb3JlbWEgZGVsIEzDrW1pdGUgQ2VudHJhbA0KDQojIyMgRW51bmNpYWRvDQoNCiMgUHJvYmxlbWEgMw0KIyMgVGVvcmVtYSBkZWwgbMOtbWl0ZSBjZW50cmFsDQoNCkVsIFRlb3JlbWEgZGVsIEzDrW1pdGUgQ2VudHJhbCBlcyB1bm8gZGUgbG9zIG3DoXMgaW1wb3J0YW50ZXMgZW4gbGEgaW5mZXJlbmNpYSBlc3RhZMOtc3RpY2EgeSBoYWJsYSBzb2JyZSBsYSBjb252ZXJnZW5jaWEgZGUgbG9zIGVzdGltYWRvcmVzIGNvbW8gbGEgcHJvcG9yY2nDs24gbXVlc3RyYWwgYSBsYSBkaXN0cmlidWNpw7NuIG5vcm1hbC4gQWxndW5vcyBhdXRvcmVzIGFmaXJtYW4gcXVlIGVzdGEgYXByb3hpbWFjacOzbiBlcyBiYXN0YW50ZSBidWVuYSBhIHBhcnRpciBkZWwgdW1icmFsIG4+MzAuDQoNCiMjIyBOb3RhDQoqIEZ1bmNpb25lcyByZWNvbWVuZGFkYXMgOiByYmlub20oKSAsIGRhdGEuZnJhbWUoKSwgYXBwbHkoKQ0KKiBFbnRyZWdhYmxlIDogZW5sYWNlIGVuIFJQdWJzIGNvbiBpbmZvcm1lIDMNCg0KIyMjIFB1bnRvIGENCiogUmVhbGljZSB1bmEgc2ltdWxhY2nDs24gZW4gbGEgY3VhbCBnZW5lcmUgdW5hIHBvYmxhY2nDs24gZGUgJE4gPSAxMDAwJCAoTG90ZSksIGRvbmRlIGVsIHBvcmNlbnRhamUgZGUgaW5kaXZpZHVvcyBlbmZlcm1hcyBzZWEgZGVsICQ1MFwlJC4gU2Ugc3Vwb25kcsOhbiBwbGFudGFzLg0KDQpgYGB7ciBpdGVtX2EgLCBpbmNsdWRlID0gVFJVRSwgZWNobyA9IFRSVUV9DQojIEl0ZW0gIGENCiMgY3JlYXRpb24gb2YgdGhlIHBvcHVsYXRpb24gc2ljay9oZWFsdGh5IDUwJS81MCUNCnBvcHVsYXRpb24gPSByZXAgKGMoMCwxKSwgZWFjaCA9IDUwMCkgDQp0YWJsZShwb3B1bGF0aW9uKQ0KYGBgDQoNCiMjIyBQdW50byBiDQoqIEdlbmVyZSB1bmEgZnVuY2nDs24gcXVlIHBlcm1pdGE6DQogICogT2J0ZW5lciB1bmEgbXVlc3RyYSBhbGVhdG9yaWEgZGUgbGEgcG9ibGFjacOzbiB5DQogICogQ2FsY3VsZSBlbCBlc3RpbWFkb3IgZGUgbGEgcHJvcG9yY2nDs24gbXVlc3RyYWwgJFxoYXR7cH0kIHBhcmEgdW4gdGFtYcOxbyBkZSBtdWVzdHJhIGRhZG8gbi4NCg0KYGBge3IgaXRlbV9iLCBpbmNsdWRlID0gVFJVRSwgZWNobyA9IFRSVUV9DQojIEl0ZW0gYg0KIyBDcmVhdGUgYSBmdW5jdGlvbiB0byBPYnRhaW4gYSByYW5kb20gc2FtcGxlIG9mIHRoZSBwb3B1bGF0aW9uICAoZXhhbXBsZSB3aXRoIDUwIHNhbXBsZXMpDQpyYW5kb21zYW1wbGUgPSBmdW5jdGlvbihuKXsNCiAgcyA9IHNhbXBsZShwb3B1bGF0aW9uLCBuLCByZXBsYWNlID0gVFJVRSkNCiAgcmV0dXJuIChzKQ0KfQ0KIyBDYWxjdWxhdGUgdGhlIGVzdGltYXRvciAncGhhdCcgZm9yIGEgZ2l2ZW4gc2l6ZSBvZiB0aGUgc2FtcGxlLg0KIyBGb3IgdGhpcyBjYXNlLCBpcyB0aGUgcmVsYXRpb24gYmV0d2VlbiB0aGUgc2ljayBvbmUgYWdhaW5zIHRoZSBwb3B1bGF0aW9uDQoNCnBoYXQgPSBmdW5jdGlvbihuKXsNCiAgcyA9IHJhbmRvbXNhbXBsZShuKQ0KICBwID0gcHJvcC50YWJsZSh0YWJsZShzKSkNCiAgbmFtZXMocCkgPSBjKCIxLXAiLCAicGhhdCIpDQogIHJldHVybihwWzJdKSAjIFJldHVybiBwaGF0DQp9DQojTGV0J3MgdHJ5IHRoZSBmdW5jdGlvbnMgZm9yIGRpZmZlcmVudCBzYW1wbGUgc2l6ZXMNCnYgPSBjKDEwLDMwLDUwLDc1LDEwMCwyMDAsNTAwLDEwMDAsMjAwMCkNCnNhcHBseSh2LCBwaGF0KQ0KYGBgDQoNCiMjIyBQdW50byBjDQoNCiogUmVwaXRhIGVsIGVzY2VuYXJpbyBhbnRlcmlvciAoYikgJG4gPSA1MDAkIHZlY2VzIHkgYW5hbGljZSBsb3MgcmVzdWx0YWRvcyBlbiBjdWFudG8gYWwgY29tcG9ydGFtaWVudG8gZGUgbG9zIDUwMCByZXN1bHRhZG9zIGRlbCBlc3RpbWFkb3IgJFxoYXR7cH0kLg0KICAqIMK/UXXDqSB0YW4gc2ltw6l0cmljb3MgbyBzZXNnYWRvcyBzb24gbG9zIHJlc3VsdGFkb3Mgb2J0ZW5pZG9zPw0KICAqIMK/UXXDqSBzZSBwdWVkZSBvYnNlcnZhciBlbiBjdWFudG8gYSBsYSB2YXJpYWJpbGlkYWQ/Lg0KICAqIFJlYWxpY2UgZW4gc3UgaW5mb3JtZSB1biBjb21lbnRhcmlvIHNvYnJlIGxvcyByZXN1bHRhZG9zIG9idGVuaWRvcy4NCg0KYGBge3IgaXRlbV9jLCBpbmNsdWRlID0gVFJVRSwgZWNobyA9IFRSVUV9DQojIEl0ZW0gYw0KIyBSZXBlYXQgdGhlIGFib3ZlIHdpdGggbiA9IDUwMA0KDQpncmFwaCA9IGZ1bmN0aW9uKG4pew0KICBtID0gNTAwDQogIHkgPSBtYXRyaXgocmFuZG9tc2FtcGxlKG4qbSksIG5jb2wgPSBuKQ0KICBwaGF0ID0gZnVuY3Rpb24odil7DQogIHN1bSh2KS9uDQogIH0NCiAgcGhhdDUgPSBhcHBseSh5LCAxLCBwaGF0KQ0KICBwYXIobWZyb3c9YygyLDIpKQ0KICBoaXN0KHBoYXQ1KQ0KICBib3hwbG90KHBoYXQ1KQ0KICBxcW5vcm0ocGhhdDUpDQogIHJldHVybihwaGF0NSkNCn0NCmcgPSBncmFwaCg1KQ0Kc3VtbWFyeShnKQ0Kc2hhcGlyby50ZXN0KGcpDQpgYGANCg0KU2UgdmVuIGVzcGFjaW9zIGVuIGxhIGdyw6FmaWNhIHBvcnF1ZSBsb3MgZGF0b3Mgbm8gc29uIGNvbnRpbnVvcyBzaW5vIGRpc2NyZXRvcy4gTG9zIHJlc3VsdGFkb3Mgc2UgdmVuIG3DoXMgc2ltw6l0cmljb3MgcXVlIGFzaW3DqXRyaWNvcywgYXVucXVlIGVzdMOhbiB1biBwb2NvIG3DoXMgYSBsYSBpenF1aWVyZGEgZGVsIGdyw6FmaWNvLCBwZXJvIHNlIG5vdGEgcXVlIGVuIGxvcyBleHRyZW1vcyBoYXkgbXVjaG8gbWVub3MgZGF0b3MgcXVlIGhhY2lhIGVsIGNlbnRybyBkZWwgbWlzbW8uICBUaWVuZSB1biB2YWxvciBwIG11eSBwZXF1ZcOxby4NCkxvcyByZXN1bHRhZG9zIHNvbiBwb2NvIHNlc2dhZG9zLCBwZXJvIHRpZW5lbiBtdWNoYSB2YXJpYWJpbGlkYWQgZGVudHJvIGRlbCByYW5nby4NCg0KIyMjIFB1bnRvIGQNCg0KKiBSZXBpdGEgbG9zIHB1bnRvcyBiIHkgYyBwYXJhIHRhbWHDsW9zIGRlIG11ZXN0cmEgJG49NSwgMTAsIDE1LCAyMCwgMzAsIDUwLCA2MCwgMTAwLCAyMDAsIDUwMCQuIENvbXBhcmUgbG9zIHJlc3VsdGFkb3Mgb2J0ZW5pZG9zIHBhcmEgbG9zIGRpZmVyZW50ZXMgdGFtYcOxb3MgZGUgbXVlc3RyYSBlbiBjdWFudG8gYSBsYSBub3JtYWxpZGFkLiBVdGlsaWNlIHBydWViYXMgZGUgYm9uZGFkIHkgYWp1c3RlIChzaGFwaXJvIHdpbGtzIDpzaGFwaXJvLnRlc3QoKSkgeSBtw6l0b2RvcyBncsOhZmljb3MgKGdyw6FmaWNvIGRlIG5vcm1hbGlkYWQ6IHFxbm9ybSgpKS4NCiAgKiBDb21lbnRlIGVuIHN1IGluZm9ybWUgbG9zIHJlc3VsdGFkb3Mgb2J0ZW5pZG9zDQoNCg0KYGBge3IgaXRlbV9kLCBpbmNsdWRlID0gVFJVRSwgZWNobyA9IEZBTFNFfQ0KIyBJdGVtIGQNCiMgUmVwZWF0IGZvciBuID0gNSwxMCwxNSwyMCwzMCw1MCw2MCwxMDAsMjAwLDUwMA0KZ3JhcGggPSBmdW5jdGlvbihuKXsNCiAgbSA9IDUwMA0KICB5ID0gbWF0cml4KHJhbmRvbXNhbXBsZShuKm0pLCBuY29sID0gbikNCiAgcGhhdCA9IGZ1bmN0aW9uKHYpew0KICAgIHN1bSh2KS9uDQogIH0NCiAgcGhhdDUgPSBhcHBseSh5LCAxLCBwaGF0KQ0KICBwID0gcm91bmQoc2hhcGlyby50ZXN0KHBoYXQ1KSRwLnZhbHVlLCA0KQ0KICB0aXRsZSA9IHBhc3RlICgibj0iLG4sInAtdmFsb3I9IiwgcCkNCiAgcGFyKG1mcm93PWMoMSwzKSkNCiAgaGlzdChwaGF0NSwgbWFpbiA9IHRpdGxlKQ0KICBib3hwbG90KHBoYXQ1LCBtYWluID0gdGl0bGUpDQogIHFxbm9ybShwaGF0NSwgbWFpbiA9IHRpdGxlKQ0KICBxcWxpbmUocGhhdDUsIGNvbCA9ICJyZWQiKQ0KICByZXR1cm4ocGhhdDUpDQp9DQp2ID0gYyg1LDEwLDE1LDIwLDMwLDUwLDYwLDEwMCwyMDAsNTAwKQ0KZm9yIChpIGluIHYpew0KICBncmFwaChpKQ0KfQ0KYGBgDQoNClNlIHB1ZWRlIGNvbXByb2JhciBjb24gZXN0ZSBjb21wb3J0YW1pZW50byBlbCBUZW9yZW1hIGRlbCBMw61taXRlIENlbnRyYWwsIHB1ZXMgYSBtZWRpZGEgcXVlIHZhIGF1bWVudGFuZG8gZWwgdGFtYcOxbyBkZSBsYSBtdWVzdHJhLCBsYSBkaXN0cmlidWNpw7NuIHNlIGhhY2UgbcOhcyBzaW3DqXRyaWNhIHkgdGllbmUgdW5hIGRpc3RyaWJ1Y2nDs24gbm9ybWFsLg0KDQojIyMgUHVudG8gZQ0KUmVwaXRhIHRvZGEgbGEgc2ltdWxhY2nDs24gKHB1bnRvcyBhIOKAkyBkKSwgcGVybyBhaG9yYSBwYXJhIGxvdGVzIGNvbiAkMTBcJSQgZGUgcGxhbnRhcyBlbmZlcm1hcyB5IGRlIG51ZXZvIHBhcmEgbG90ZXMgY29uIHVuICQ5MFwlJCBkZSBwbGFudGFzIGVuZmVybWFzLiBDb25jbHV5YSBzb2JyZSBsb3MgcmVzdWx0YWRvcyBkZWwgZWplcmNpY2lvLg0KDQpgYGB7ciBpdGVtX2UgLCBpbmNsdWRlID0gVFJVRSwgZWNobyA9IEZBTFNFfQ0KIyBJdGVtIGUNCiMgUGFydCBhDQojIENyZWF0aW9uIG9mIHRoZSBwb3B1bGF0aW9uIHNpY2svaGVhbHRoeSAxMCUvOTAlDQpwb3B1bGF0aW9uMiA9IGMocmVwKDEsMTAwKSwgcmVwKDAsOTAwKSkNCnRhYmxlKHBvcHVsYXRpb24yKSAgDQoNCiMgUGFydCBiDQojIENyZWF0ZSBhIGZ1bmN0aW9uIHRvIE9idGFpbiBhIHJhbmRvbSBzYW1wbGUgb2YgdGhlIHBvcHVsYXRpb24NCnJhbmRvbXNhbXBsZSA9IGZ1bmN0aW9uKG4pew0KICBzID0gc2FtcGxlKHBvcHVsYXRpb24sIG4sIHJlcGxhY2UgPSBUUlVFKQ0KICByZXR1cm4gKHMpDQp9DQojIENhbGN1bGF0ZSB0aGUgZXN0aW1hdG9yICdwaGF0JyBmb3IgYSBnaXZlbiBzaXplIG9mIHRoZSBzYW1wbGUuDQojIEZvciB0aGlzIGNhc2UsIGlzIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHRoZSBzaWNrIG9uZSBhZ2FpbnMgdGhlIHBvcHVsYXRpb24NCg0KcGhhdCA9IGZ1bmN0aW9uKG4pew0KICBzID0gcmFuZG9tc2FtcGxlKG4pDQogIHAgPSBwcm9wLnRhYmxlKHRhYmxlKHMpKQ0KICBuYW1lcyhwKSA9IGMoIjEtcCIsICJwaGF0IikNCiAgcmV0dXJuKHBbMl0pICMgUmV0dXJuIHBoYXQNCn0NCiNMZXQncyB0cnkgdGhlIGZ1bmN0aW9ucyBmb3IgZGlmZmVyZW50IHNhbXBsZSBzaXplcw0KdiA9IGMoMTAsMzAsNTAsNzUsMTAwLDIwMCw1MDAsMTAwMCwyMDAwKQ0Kc2FwcGx5KHYsIHBoYXQpDQoNCiMgUGFydCBjDQojIFJlcGVhdCB0aGUgYWJvdmUgd2l0aCBuID0gNTAwDQpncmFwaCA9IGZ1bmN0aW9uKG4pew0KICBtID0gNTAwDQogIHkgPSBtYXRyaXgocmFuZG9tc2FtcGxlKG4qbSksIG5jb2wgPSBuKQ0KICBwaGF0ID0gZnVuY3Rpb24odil7DQogIHN1bSh2KS9uDQogIH0NCiAgcGhhdDUgPSBhcHBseSh5LCAxLCBwaGF0KQ0KICBwYXIobWZyb3c9YygyLDIpKQ0KICBoaXN0KHBoYXQ1KQ0KICBib3hwbG90KHBoYXQ1KQ0KICBxcW5vcm0ocGhhdDUpDQogIHJldHVybihwaGF0NSkNCn0NCg0KIyBQYXJ0IGQNCiMgUmVwZWF0IGZvciBuID0gNSwxMCwxNSwyMCwzMCw1MCw2MCwxMDAsMjAwLDUwMA0KZ3JhcGggPSBmdW5jdGlvbihuKXsNCiAgbSA9IDUwMA0KICB5ID0gbWF0cml4KHJhbmRvbXNhbXBsZShuKm0pLCBuY29sID0gbikNCiAgcGhhdCA9IGZ1bmN0aW9uKHYpew0KICAgIHN1bSh2KS9uDQogIH0NCiAgcGhhdDUgPSBhcHBseSh5LCAxLCBwaGF0KQ0KICBwID0gcm91bmQoc2hhcGlyby50ZXN0KHBoYXQ1KSRwLnZhbHVlLCA0KQ0KICB0aXRsZSA9IHBhc3RlICgibj0iLG4sInAtdmFsb3I9IiwgcCkNCiAgI3BhcihtZnJvdz1jKDIsMikpDQogICNoaXN0KHBoYXQ1LCBtYWluID0gdGl0bGUpDQogICNib3hwbG90KHBoYXQ1LCBtYWluID0gdGl0bGUpDQogIHFxbm9ybShwaGF0NSwgbWFpbiA9IHRpdGxlKQ0KICBxcWxpbmUocGhhdDUsIGNvbCA9ICJyZWQiKQ0KICBzaGFwaXJvLnRlc3QocGhhdDUpDQogIHJldHVybihwaGF0NSkNCn0NCnYgPSBjKDUsMTAsMTUsMjAsMzAsNTAsNjAsMTAwLDIwMCw1MDApDQpmb3IgKGkgaW4gdil7DQogIGdyYXBoKGkpDQp9DQoNCmBgYA0KDQoNCkNvbiBjYW50aWRhZGVzIHBlcXVlw7FhcyBlbiBsYXMgcHJpbWVyYXMgbXVlc3RyYXMsIHNlIG5vdGEgcXVlIGxhIGRpc3RyaWJ1Y2nDs24gbm8gZXMgbm9ybWFsLCBjb25kaWNpw7NuIG5lY2VzYXJpYSBwYXJhIHBvZGVyIHZhbGlkYXIgZWwgVGVvcmVtYSBkZWwgTMOtbWl0ZSBDZW50cmFsLiAgQSBtZWRpZGEgcXVlIGF1bWVudGEgZWwgdGFtYcOxbyBkZSBsYSBtdWVzdHJhLCBzZSB2ZSBxdWUgbGEgZGlzdHJpYnVjacOzbiBzZSBjb21wb3J0YSBjb21vIHVuYSBkaXN0cmlidWNpw7NuIG5vcm1hbC4gU2Ugbm90YSBjb21vIGxhIGxpbmVhIHJvamEgZXN0w6Egc29icmUgbGEgbWF5b3LDrWEgZGUgbG9zIHB1bnRvcywgcXVlIHNvbiB2YWxvcmVzIGRlIGxhIG11ZXN0cmEsIGxvIHF1ZSBkZW11ZXN0cmEgcXVlIHNlIGNvbXBvcnRhIGNvbW8gdW5hIGRpc3RyaWJ1Y2nDs24gbm9ybWFsLiA=