inst/rev/robj.R

#0:
.Return<-function(title="Return!"){
      .newl  <- tktoplevel(); tkwm.geometry(.newl,"+0+0")
      tkpack(tklabel(.newl,text=title))
      tkbind(.newl,"<Return>",function(){
        tkdestroy(.newl);
        set.tclvalue<-function(name,value) tclvalue(name)<-as.character(value)
        set.tclvalue("tvndone",2)
      })
      tkfocus(.newl); tkwait.variable("tvndone")
      "ok"
}

#:0
#1:
print("robj  - Version: 041222: Objekte einrichten")

#2:
zeitpunkte.03.02.97<-
c(173877, 178739, 203188, 203742, 203906, 205573, 205640, 209310, 209949,
  210299, 210382, 210906, 213142, 213545, 213785, 213791, 213922, 213924,
  213925, 213969, 214320, 214935, 214949, 214961, 214969, 215075, 215387,
  216570, 217267, 218288, 219059, 219105, 219258, 219287, 219959, 220475,
  220591, 220876, 220949, 220964, 221084, 221098, 221588, 222376, 222976,
  223093, 225865, 226062, 226068, 226079, 226081, 226082, 226101, 226122,
  226625, 227999, 228132, 228469, 228789, 230543, 230662, 230706, 231139,
  231857, 232015, 232061, 232773, 232831, 232970, 233010, 233175, 233519,
  234897, 235485, 235940, 236810, 239219, 240240, 240787, 240797, 240798,
  240806, 240846, 240913, 241079, 242224, 243002, 243262, 244777, 245317,
  246598, 248563, 248770, 250683, 253013, 253187, 253760, 255462, 255511,
  255618, 255908, 256270, 257651)
dzeitpunkte.03.02.97<-c(zeitpunkte.03.02.97[1]%%(3600*24),
                        diff(zeitpunkte.03.02.97))

#:2


#3:
mengen.03.02.97<-
c(14101,105563,   1866, 11505,   216, 19391, 35340, 10746, 205246,  8192,
 124667, 25467,  23819, 49226,  2450,  5520,  1646,  2471,  12301,  3431,
   1646, 15560,   9287,  5105,  7070, 32116,  1363,  3190,   1548, 12851,
   1395,  1001,  16418,  3431, 20106, 35024,  5113, 10395,1589837, 57965,
 200133, 98082,  57314,  5113,  1007, 16418, 45354, 18606,   3705,   711,
  16418,  1275,    708, 18868, 28354, 92723, 14101, 19533,  25741, 20445,
  12671,150325,   4107, 20867,  1434,305118, 23719, 13756,  14101,   345,
  25300,  6515,   3406,109591, 14640,197070,   216,  1434,  15747,  1434,
  12301, 12451,  15251,  8130,  8687, 19391,   800,  2587,  23719,   345,
    836,  4107,1594950, 15871, 10746,140075,  1650,   129,  15688,   561,
 122754,   216,  14640)

#:3


#4:
zeitpunkte.17.02.97<-
c(1382822, 1384215, 1384346, 1384788, 1387047, 1388561, 1388822, 1394377,
  1395438, 1403951, 1406572, 1407042, 1412097, 1414932, 1415151, 1415161,
  1416757, 1416849, 1418675, 1419331, 1419391, 1421413, 1422235, 1422257,
  1422303, 1422368, 1422608, 1422906, 1423487, 1423547, 1424076, 1424318,
  1425637, 1425819, 1427253, 1427281, 1427302, 1427307, 1427326, 1427682,
  1427765, 1428085, 1428687, 1429426, 1430373, 1430374, 1430375, 1430443,
  1430530, 1430958, 1430977, 1430992, 1430995, 1431731, 1432460, 1432784,
  1434197, 1434355, 1434378, 1434676, 1435392, 1435413, 1436708, 1439140,
  1440101, 1440637, 1441413, 1441456, 1442088, 1442378, 1445136, 1447472,
  1448909, 1449247, 1449544, 1452266, 1454031, 1454319, 1454503, 1456332,
  1459823, 1459830, 1460204, 1461119, 1461847, 1461906, 1466870)
dzeitpunkte.17.02.97<-c(zeitpunkte.17.02.97[1]%%(3600*24),
                        diff(zeitpunkte.17.02.97))

#:4


#5:
mengen.17.02.97<-
c(20760,  2034, 65218,  7526,  6944,  3481, 14115,  1448,  9985, 14115,
   1448, 14115, 30273,  1448,  1448, 13012, 18688,  7572,  1551, 18688,
  34890,  9723,  2285,  7283,  1448,  1969,  6739,129898, 38348, 14115,
  14115, 52438, 38517,  1448, 29969, 10749,  3287,   324, 29140,  8346,
  14115, 32836, 14115, 16418,  4024,   445, 10533,  6021, 41378,  1448,
   2910,  4051, 29140, 19473,  8346,   345, 27785,  8564,  4425,478920,
  30533, 16418, 29083, 14115,   868, 27852, 19473, 12322,  4273,207117,
   1448, 12515,  1001,  5519, 87888, 16721, 33964, 22307,  9078, 78540,
  14115,  4262, 11289, 18688,  1448,   870, 36422)


#:5


#6:
# Kuckuckseier
kuckuckseier<-list(
     .1*c(220,239,209,238,250,240,217,238,228,231,231,235,230,230),
     .1*c(218,230,233,224,224,230,230,230,239,223,220,226,220,221,211,230),
     .1*c(198,221,215,209,220,210,223,210,203,209,220,200,208,212,210))
# SO4 1976
SO4.76<-c( 4.8,7.4,3.7,2.7,3.8,8.4,1.6,2.5,7.6,1.6,1.5,1.4,5.8,4.0,5.1,5.1,1.5,
        2.8,3.0,0.7,2.1,1.9, 1.6,5.5,1.6,5.8,1.4,1.6,2.2  )
# SO4 1976, 1977, 1978
SO4<-list("1976"=SO4.76,
          "1977"=c( 6.50,7.60,4.20,2.70,3.70,9.10,2.60,2.70,9.10,2.40,1.30,1.60,6.20,
             3.90,5.70,5.80,1.50,1.70,1.90,1.80,1.90,1.90,1.50,5.90,1.60,6.90,
             1.00,1.40,2.30),
          "1978"=c( 4.6,6.8,3.3,2.3,3.6,8.8,1.8,2.8,9.6,2.6,1.9,1.8,5.9,4.9,5.4,5.0,
             1.4,1.9,1.5,1.5,1.3,1.5,1.7,5.7,1.4,5.9,0.6,1.0,2.2))
# Datensatz zu den norwegischen Seen
norwegen<-
list("1976" = structure(.Data = c(432,497,458,472,453,496,531,542,487,
        587,627,667,538,560,493,597,623,615,482,542,531,599,488,
        485,597,605,643,629,564,480,740,370,270,380,840,160,250,
        760,160,150,140,580,400,510,510,150,280,300,70,210,190,
        160,550,160,580,140,160,220,29000,29000,16000,18000,17000,
        38000,5000,32000,13000,9000,1000,2000,5000,3000,7000,6000,
        5000,10000,10000,4000,2000,1000,14000,9000,6000,5000,3000,
        4000,4000,52,203,66,59,51,222,53,69,222,78,115,247,210,
        186,145,219,156,200,44,32,69,69,36,170,83,291,144,173,
        118),.Dim = c(29,4)),"1977" = structure(.Data = c(423,474,455,481,
        470,535,514,515,476,595,628,644,532,610,494,602,634,623,
        477,482,577,610,499,465,582,597,637,679,570,650,760,420,
        270,370,910,260,270,910,240,130,160,620,390,570,580,150,
        170,190,180,190,190,150,590,160,690,100,140,230,57000,
        41000,39000,17000,12000,59000,10000,13000,13000,12000,2000,
        3000,12000,5000,11000,13000,6000,3000,15000,36000,9000,4000,
        13000,14000,19000,10000,8000,4000,4000,62,195,52,50,46,288,
        66,62,228,104,97,114,220,224,156,228,153,96,36,55,57,76,
        22,165,91,279,111,239,93),.Dim = c(29,4)),"1978" = structure(
        .Data = c(440,498,457,483,464,554,491,523,487,559,617,628,
        533,557,491,571,620,607,509,534,560,599,486,477,590,578,
        640,648,577,460,680,330,230,360,880,180,280,960,260,190,
        180,590,490,540,500,140,190,150,150,130,150,170,570,140,
        590,60,100,220,29500,18000,20000,6000,17000,35000,6000,13000,
        12500,18500,1500,1000,4500,16500,8000,5000,2000,1500,10000,
        6000,2000,1000,16500,15000,6500,7000,2000,8000,2500,55,195,
        44,43,49,267,47,66,230,105,114,118,194,225,144,206,186,
        204,41,58,66,80,33,165,96,264,70,147,116),.Dim = c(29,4)),
        "1981" = structure(.Data = c(449,521,469,490,454,575,543,519,
        490,602,625,667,521,598,493,567,629,568,545,554,555,613,
        492,484,617,575,598,672,529,360,560,290,210,380,870,150,
        290,760,200,170,180,540,430,430,420,160,180,170,150,160,
        170,190,480,180,580,200,200,210,22000,12000,11000,7000,
        20000,37000,5000,16000,12000,6000,1000,1000,5000,6000,7000,
        5000,4000,20000,10000,5000,1000,1000,13000,16000,4000,5000,
        1000,3000,1000,47,164,51,39,45,252,67,66,187,78,104,234,
        179,218,126,185,154,268,32,48,64,66,25,130,89,124,116,
        267,79),.Dim = c(29,4)))
norwegen<-lapply(norwegen,"*",0.01)
# Stahlhaerte in Rockwell-Einheiten
stahlhaerte.in.rockwell<-c(58,49,58,57,50,60,64,65,64,59,65,65,45,54,52,59,65,57,63,54,
       65,60,61,47,60,52,63,61,54,63,62,56,56,65,56,64,65,55,59,65,
       64,49,65,50,65,61,64,61,59,63,58,57,65,60,55,64,65,59,62,65,
       64,54,56,58,40,85,53,61,56,65,58,58,55,52,65,60,65,63,64,63,
       60,61,61,65,56,62,65,54,64,63,57,64,62,58,60,52,53,62,56,65)
# 50 Ausspielungen des Lottospiels 6 aus 49
lotto.50.results<-t(matrix(
 c(45,33,31,11,34, 5,25,48,17,38, 2, 3,13,47,46,35,26,33,23,15, 9, 5,38,20,
   17,41,31,33,38, 1,37,48,11,35,26,30,26,22, 7,32,10,36, 3,49,31,18,47,27,
   44,48,32, 6,43,25,13,25,39,11,22, 7,28, 5, 3,17,13,29,10,11,46,19,16,45,
   30,38,34,17, 6,42,44,25,33,10,18,21, 2,18,11, 1,33, 9,19,26,41,24,23,21,
   49,45,22,19,36,33,45,24,43,29,13, 4,12,36,23,39,15,48,33,16,39,34, 3,23,
    8,13,26, 3,15,42,15,10,40,16,48,14,10,20,33,18,19,42,43,11,18,26,39,45,
   33,10, 6,29,23,16, 9,15,35,34,47,11,44, 9,34,26,24,47,48,39,34,38,28,29,
   28,49,15,39,41,24,14, 7,11,12,36,15,13, 4,45,37, 8,49,17,15, 7,22,49,14,
   32,33, 3,24,26,28,37,15,26, 1,32,21,42, 9,34,30,40,13,46, 6,14,36, 1,27,
   45,26,37,36,40,49,48,38,13,30,44,41, 7,34,24,43,21,48,46, 4,31, 6, 1,29,
   25,30,36,18, 7,11,47,39,48,11,35,38,36,33,40, 7,43,13, 7,48,23, 4,18, 5,
   22,12,17,39, 3,14,43,21, 4, 1,47, 5,22, 2,13,43,15,16,16,46, 5,10, 2, 4,
   23,12,26,44,18, 6,21, 9,29,44,20,17) ,6,50))
# verkaufte Stueckzahlen im letzten Monat
verkaeufe<-c(10,8,14,22,7,10,11,14,15,9,20,12,19,11,16,10,17,8,24,15,11,22,11,14,19)
# Haeufigkeit der Zahlen beim Lotto 6 aus 49
lotto.freqs<-c(223,227,225,207,213,224,211,203,229,213,214,216,175,216,213,215,228,211,
       233,218,248,226,219,195,220,229,226,195,210,214,231,249,234,198,215,224,
       219,249,223,221,216,228,216,212,218,228,210,238,242)
names(lotto.freqs)<-as.character(1:49)
# Warten auf das erste Tor bei Fussballspielen
wait.for.first.soccer.goal<-c(40,65,11,43,34,41,3,1,43,9,21,4,12,41,9,46,14,30,41,7,31,43,25,20,16)
# Betriebe und Flaeche
betriebe.flaeche<-matrix(c(488196,385680,335489,301493,164578, 26051,  7502,
               528.4,1281.2,2428.2,4243.3,4839.1,1719.6,2978.3),7,2)
# Todesjahr und Alter
year.of.death.and.age<-list(1800+c(27,84,95,108,114,118,124,128,136,141,164,165,177),
          c(13,83,34,1,11,16,68,13,77,74,87,65,83))
# Steuerkriminalitaet
steuer.kriminalitaet<-matrix(c(2,26,7,13,11,6,9,15,5,9,9,3),3,4)
# PS und SH
ps.sh<-list(c(40,45,47,45,45,60,55,48,60,50,75,60,53,75,75,50,55,60,
            50,55,53,72,60,64,75,64,75,60,88,68,75,105,75,102,120),
          c(41,52,56,67,72,69,73,73,65,78,65,72,78,73,70,70,81,82,
            82,73,87,91,94,92,86,86,88,88,88,94,113,96,110,109,130))
# Personen pro Zeitspanne
persons.per.time<-c(65,137,140,85,48,18,7)
# Kinobesuche
cinema.visitors<-list(0:6,
          c(6,8,8,11,14,11,2),
          c(5,7,12,12,12,7,5))
# radioaktiver Zerfall
zerfaelle<-list(0:14,
         c(57,203,383,525,532,408,273,139,45,27,10,4,0,1,1))
# Kriege
kriege<-list(0:4,c(223,142,48,15,4))
# Verpackungsmaschinen - Tueten
tueten<-matrix(c(5,15,30,40,10,36,60,56,32,16),5,2)
# Wahrscheinlichkeitsfunktion 2-Dim.
ws.fkt<-0.01*matrix(c(2,6,7,7,5,6,6,9,10,8,6,5,12,7,2,2),4,4)
# S-DATEN
rubber <- structure(.Data = list(hardness = c(45, 55, 61, 66, 71,
        71, 81, 86, 53, 60, 64, 68, 79, 81, 56, 68, 75, 83, 88, 59,
        71, 80, 82, 89, 51, 59, 65, 74, 81, 86), tensile.strength =
        c(162, 233, 232, 231, 231, 237, 224, 219, 203, 189, 210, 210,
        196, 180, 200, 173, 188, 161, 119, 161, 151, 165, 151, 128,
        161, 146, 148, 144, 134, 127), abrasion.loss = c(372, 206,
        175, 154, 136, 112, 55, 45, 221, 166, 164, 113, 82, 32, 228,
        196, 128, 97, 64, 249, 219, 186, 155, 114, 341, 340, 283, 267,
        215, 148), ts.low = c(-18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, -7, 0, -19, -61, -19, -29, -15, -29, -52, -19, -34, -32,
        -36, -46, -53), ts.high = c(0, 53, 52, 51, 51, 57, 44, 39, 23,
        9, 30, 30, 16, 0, 20, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0)), class = "data.frame", row.names = c("1", "2", "3",
        "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14",
        "15", "16", "17", "18", "19", "20", "21", "22", "23", "24",
        "25", "26", "27", "28", "29", "30"))
corn.rain <- structure(.Data =
        c(9.6, 12.9, 9.9, 8.7, 6.8, 12.5, 13, 10.1, 10.1, 10.1,
        10.800000000000002, 7.8, 16.2, 14.1, 10.6, 10, 11.5, 13.6,
        12.1, 12, 9.3, 7.7, 11, 6.9000000000000016, 9.5, 16.5, 9.3,
        9.4, 8.7, 9.5, 11.6, 12.1, 8, 10.7, 13.9, 11.300000000000002,
        11.6, 10.4), .Tsp = c(1890, 1927, 1))
rain.nyc1 <- structure(
        .Data = c(43.6, 37.8, 49.2, 40.3, 45.5, 44.2, 38.6, 40.6,
        38.7, 46, 37.1, 34.700000000000004, 35, 43, 34.4, 49.7, 33.5,
        38.3, 41.7, 51, 54.4, 43.7, 37.6, 34.1, 46.6, 39.3,
        33.700000000000004, 40.1, 42.4, 46.2, 36.8, 39.4, 47, 50.3,
        55.5, 39.5, 35.5, 39.4, 43.8, 39.4, 39.9, 32.700000000000004,
        46.5, 44.2, 56.1, 38.5, 43.1, 36.7, 39.6, 36.9, 50.8, 53.2,
        37.8, 44.7, 40.6, 41.7, 41.4, 47.8, 56.1, 45.6, 40.4, 39,
        36.1, 43.9, 53.5, 49.8, 33.799999999999996, 49.8, 53, 48.5,
        38.6, 45.1, 39, 48.5, 36.7, 45, 45, 38.4, 40.8, 46.9, 36.2,
        36.9, 44.4, 41.5, 45.2, 35.6, 39.9, 36.2, 36.5), .Tsp = c(
        1869, 1957, 1))
corn.yield <- structure(.Data = c(24.5,
        33.700000000000004, 27.9, 27.5, 21.7, 31.9, 36.8, 29.9, 30.2,
        32, 34, 19.4, 36, 30.2, 32.4, 36.4, 36.9, 31.5, 30.5,
        32.299999999999996, 34.9, 30.1, 36.9, 26.8, 30.5,
        33.299999999999996, 29.7, 35, 29.9, 35.200000000000004, 38.3,
        35.200000000000004, 35.5, 36.7, 26.8, 38, 31.7, 32.6), .Tsp
         = c(1890, 1927, 1))
rain.nyc2 <- structure(.Data = c(48.1,
        42.4, 48.8, 45.8, 40, 39.8, 45.2, 47.4, 40.9, 46.7, 36.2,
        37.3, 40.4, 46.6, 38.8, 55.3, 42.1, 46.7, 46.6, 53, 58.7,
        52.3, 41.4, 38.9, 53, 44.2, 35.700000000000004, 38, 44.3,
        45.1, 42.1, 41.8, 47.1, 47.1, 48.6, 41.6, 44.5, 41.8, 45.3,
        41.4, 41.6, 36, 40.3, 38.5, 44.4, 33.5, 40.8,
        33.200000000000004, 39.3, 33.6, 48.4, 48.8, 34.4, 43.4, 36.7,
        37.7, 36.5, 49.7, 49.9, 40.7, 39.1, 35.299999999999996, 35.5,
        38.8, 49.7, 45, 32.6, 46.3, 48.1, 46.5, 35.700000000000004,
        45, 36.2, 49.6, 40.5, 51.7, 45.7, 39, 48.8, 54.2,
        34.700000000000004, 38.7, 45.2, 46.7, 46.3, 38.1, 42.8, 40.6,
        33.299999999999996), .Tsp = c(1869, 1957, 1))

#:6


#7:
"frabo95"<-
structure(.Data = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,
        18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,
        36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,
        54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,
        72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,
        90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,
        106,107,108,109,110,111,112,113,114,115,116,117,118,119,
        120,121,122,123,124,125,126,127,128,129,130,131,132,133,
        134,135,136,137,138,139,140,141,142,143,144,145,146,147,
        148,149,150,151,152,153,154,155,156,157,158,159,160,161,
        162,163,164,165,166,167,168,169,170,171,172,173,174,175,
        176,177,178,179,180,181,182,183,184,185,186,187,188,189,
        190,191,192,193,194,195,196,197,198,199,200,201,202,203,
        204,205,206,207,208,209,210,211,212,213,214,215,216,217,
        218,219,220,221,222,223,224,225,226,227,228,229,230,231,
        232,233,234,235,236,237,238,239,240,241,242,243,244,245,
        246,247,248,249,250,251,1,2,1,1,1,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,2,1,1,
        1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,
        1,1,1,1,1,2,1,1,1,1,3,1,1,1,1,2,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,1,1,1,1,2,
        1,1,2,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,2,1,1,2,1,1,1,
        2,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,1,1,2,1,1,1,1,1,1,1,1,1,2,1,1,1,2,
        2,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,0,
        0,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,
        1,1,0,0,0,0,1,1,1,1,1,1,1,0,1,0,0,-1,0,0,0,0,0,0,
        1,0,0,0,0,1,0,1,1,0,0,1,1,1,0,1,1,1,1,0,0,0,0,1,
        1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,
        0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
        0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
        1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,
        0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
        1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,
        0,0,0,0,0,0,0,0,20,21,21,21,22,21,21,21,27,21,22,21,
        23,20,22,21,23,21,22,22,22,20,20,20,20,20,22,19,19,23,
        24,22,22,23,21,22,23,19,23,22,20,23,23,22,20,20,22,24,
        23,22,24,19,24,22,20,21,22,21,22,20,21,20,19,19,24,19,
        22,24,19,19,20,21,24,24,19,19,21,21,19,21,19,22,26,-1,
        24,19,19,20,23,22,19,22,24,20,20,21,19,22,21,20,21,22,
        20,20,19,20,20,19,20,20,19,20,23,22,18,22,22,24,20,19,
        20,19,21,20,21,19,22,20,22,21,22,19,22,20,23,20,22,22,
        20,22,21,20,23,20,19,21,20,19,23,25,21,23,19,22,23,21,
        20,20,23,23,22,22,23,22,21,19,22,21,21,21,21,20,21,20,
        20,20,23,23,20,21,21,20,23,22,21,20,20,22,30,20,21,21,
        22,26,21,26,27,23,21,24,21,19,19,22,21,21,22,24,21,23,
        22,21,22,21,27,25,21,22,20,19,25,21,22,20,19,21,20,23,
        23,21,19,21,23,21,22,18,20,20,21,23,22,20,23,21,20,28,
        22,24,28,27,20,165,176,191,181,175,169,191,163,189,170,
        185,164,175,186,187,185,198,174,186,180,192,185,181,189,
        182,182,175,172,165,184,184,180,180,164,175,176,154,175,
        167,165,190,169,180,172,182,180,182,186,188,190,172,170,
        183,185,191,186,190,165,164,163,183,178,170,181,168,179,
        168,183,160,165,185,176,198,193,165,160,168,175,-1,174,
        175,162,180,184,194,176,189,185,193,192,181,169,178,154,
        165,178,178,182,182,189,194,162,175,180,184,180,163,179,
        185,190,170,170,183,183,172,180,183,180,180,180,185,190,
        175,192,169,184,191,187,182,195,178,178,187,195,179,181,
        198,187,177,176,175,184,184,176,194,170,165,179,192,188,
        170,172,180,170,183,184,-1,180,179,180,184,182,193,181,
        172,167,193,183,186,167,172,193,195,173,179,162,195,178,
        178,177,182,203,178,180,177,185,180,178,180,187,197,188,
        184,184,188,186,189,-1,185,187,187,176,174,163,176,187,
        187,162,168,196,188,184,175,184,174,185,183,196,168,174,
        163,173,170,182,183,176,168,170,185,177,192,171,180,191,
        170,182,179,165,174,165,175,174,185,186,195,184,168,190,
        194,166,190,60,68,75,62,70,56,81,54,84,59,85,47,59,73,
        80,80,71,60,84,65,85,73,72,95,67,76,70,52,50,82,74,75,
        82,62,62,76,46,58,55,63,78,47,65,60,65,63,90,65,85,68,
        70,53,77,78,73,85,90,60,55,52,70,72,54,67,63,80,55,83,
        48,53,80,70,90,83,54,58,60,65,-1,65,55,48,82,72,92,58,
        88,75,80,88,84,60,72,-1,55,70,79,73,75,84,89,50,55,62,
        80,80,60,78,78,76,63,62,79,85,60,80,77,78,81,72,79,80,
        67,78,57,100,97,86,68,85,75,64,70,88,72,65,96,70,76,71,
        66,82,87,81,79,55,60,60,95,98,67,64,78,63,85,84,-1,90,
        73,70,85,83,92,82,70,52,81,76,105,58,58,80,80,67,71,55,
        89,78,89,67,80,97,64,68,73,72,70,69,100,112,70,78,75,
        88,80,80,80,-1,103,78,84,64,72,75,61,73,75,57,60,68,78,
        77,87,82,72,90,86,105,45,75,-1,72,60,60,56,60,63,65,78,
        75,90,56,75,80,66,68,76,53,64,47,70,57,80,71,88,80,69,
        80,84,64,80,1,0,1,1,2,1,1,2,2,1,0,1,1,1,1,1,7,1,0,
        2,2,1,1,6,3,0,1,1,3,2,1,2,1,2,2,1,6,2,1,1,0,1,1,
        0,1,1,0,0,2,1,0,1,1,2,1,0,1,3,2,1,3,5,1,3,1,3,1,
        1,1,1,0,3,0,0,2,1,1,1,0,0,1,1,1,2,3,0,1,1,3,0,0,
        2,3,5,2,0,2,1,0,1,2,0,1,4,3,3,1,3,1,0,0,1,0,1,2,
        1,1,8,0,1,0,4,1,0,-1,1,1,1,2,1,1,2,1,3,4,3,1,1,1,
        2,1,1,1,0,1,1,1,2,1,1,4,3,1,1,1,1,2,1,2,2,0,1,1,
        1,2,2,1,1,2,2,2,0,1,2,0,0,2,0,0,1,0,0,2,1,3,1,0,
        0,0,0,1,0,2,0,0,1,1,1,3,1,2,1,1,1,3,1,1,1,4,0,1,
        1,1,4,1,1,0,1,2,0,0,1,2,3,1,2,2,1,1,1,1,1,3,3,4,
        1,2,3,4,2,0,1,0,0,1,0,1,1,1,4,1,1,1,1,1,0,1,0,1,
        1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,
        0,0,0,1,0,0,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,
        0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,
        0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,
        0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,
        0,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,1,
        0,1,1,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,
        0,0,0,0,0,0,1,0,1,1,0,1,0,1,0,0,0,0,1,0,0,0,1,1,
        1,0,0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,1,1,0,0,1,1,
        0,1,0,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,1,0,
        0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,
        1,1,1,1,1,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0,1,0,
        0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,1,1,0,1,0,0,0,0,0,
        0,0,0,0,1,0,0,0,1,1,1,0,0,1,0,1,1,0,1,0,0,1,0,0,
        0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,
        0,0,0,1,1,0,1,1,0,0,0,1,0,0,0,1,0,1,0,1,1,1,0,0,
        0,0,1,1,0,0,1,0,0,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,
        1,1,0,1,1,0,1,1,1,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,
        0,1,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,1,0,1,1,0,
        0,0,1,1,0,0,0,0,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,
        0,1,0,0,0,0,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,
        1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,1,1,0,1,
        0,1,0,0,0,1,0,1,1,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0,
        0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,0,0,1,
        1,1,0,0,0,1,1,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,
        0,1,1,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,1,1,1,
        0,0,1,0,0,0,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,1,1,
        0,1,1,0,0,0,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,1,0,
        0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,0,1,
        0,1,0,1,1,0,1,0,1,1,0,1,0,0,0,0,0,1,0,1,1,1,1,0,
        0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,0,1,1,1,0,
        0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,1,0,1,1,0,1,1,1,
        1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,1,1,1,0,1,0,
        1,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,0,
        1,0,0,1,1,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,
        0,1,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,0,0,0,1,
        1,1,1,0,1,0,1,0,0,0,0,0,1,0,1,1,1,1,1,0,0,0,1,0,
        0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,1,0,1,1,1,1,
        0,0,1,1,0,0,1,0,1,0,1,1,1,1,0,1,0,1,0,0,0,0,1,1,
        1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,0,0,0,1,
        1,1,1,1,0,1,0,0,0,1,1,1,0,0,1,1,0,1,1,1,0,1,1,0,
        1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,
        1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,
        0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
        0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,1,0,1,1,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,
        1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,
        0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
        0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,
        0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,
        1,0,0,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,
        1,1,1,1,1,0,1,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,0,
        0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,
        0,1,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,0,1,1,0,1,1,1,
        1,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0,1,0,1,
        0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,1,1,1,0,0,1,1,1,
        1,0,1,1,0,0,0,1,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,0,
        1,1,0,1,0,1,0,0,1,1,1,1,0,1,0,1,0,0,0,0,1,0,0,1,
        1,0,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,1,0,1,
        0,0,0,1,1,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,1,-1,4,3,
        4,4,2.3999999999999999,3,-1,3,3,-1,2,3,3,3,5,2,4,3,3,4,
        3,3,3,3,1,3,3,3,4,4,1,2,4,4,4,2,3,3,5,4,2,3,3,3,
        2,3,2,2,2,2,2,3,4,2,1,3,4,2,2,3,1,3,2,4,1,3,3,5,
        4,3,3,3,4,5,4,2,3,2,3,2,4,3,4,3,2,4,5,4,3,2,3,1,
        -1
        ,2,2,3,3,3,3,-1,2,4,4,3,3,2,2,2,2,2,3,3,3,2,1,3,
        4,1,4,1,3,3,1,2,3,-1,-1,3,4,3,2,4,3,-1,1,2,3,2,4,
        4,3,2,3,3,4,1,3,4,3,4,4,3,2,4,3,3,3,3,4,3,3,-1,3,
        5,3,2,-1,2,-1,1,3,4,3,4,2,2,4,1,1,2,5,4,2,5,3,2,
        4,3,3,3,3,3,2,4,3,1,-1,3,4,3,1,3,3,4,1,2,4,3,3,2,
        3,3,3,3,4,4,2,2,4,3,5,3,2,1,1,3,-1,3,2,5,2,3,3,5,
        2,-1,4,3,2,2,2,-1,3,3,-1,2,4,3,-1,3,1,1,1,4,2,1,
        -1,7,3,1,1,-1,7,2,4,1,7,1,1,1,1,4,4,8,1,4,4,8,2,
        8,1,1,1,4,8,8,3,1,1,1,4,4,1,1,3,6,1,1,1,4,4,4,1,
        1,1,4,2,2,1,-1,1,1,1,1,3,7,1,8,7,7,1,1,-1,1,7,1,
        6,7,1,4,1,1,8,4,2,3,2,6,6,1,1,1,1,-1,2,4,-1,1,8,
        3,4,8,2,2,2,-1,6,2,8,1,1,4,7,7,8,1,1,1,1,1,2,2,8,
        1,1,8,8,8,1,1,1,7,2,3,4,3,1,8,1,1,4,4,1,1,4,8,4,
        1,8,1,-1,7,4,1,4,8,7,1,4,4,6,7,4,4,4,8,8,4,3,4,4,
        7,7,-1,2,-1,8,3,3,8,2,1,8,4,3,8,8,1,2,1,1,1,1,1,
        1,1,4,7,1,1,8,6,8,8,1,8,1,4,6,7,7,1,1,1,-1,7,1,1,
        8,8,4,1,8,3,1,4,7,-1,1,2,8,8,4,4,2,1,2,2,8,8,2,2,
        1,1,1,1,4,1,4,8,1),.Dim = c(251,16),.Dimnames = list(
        character(0),c("1:lfd.Nr","2:Fach","3:Geschlecht","4:Alter",
        "5:Groesse","6:Gewicht","7:Geschwister","8:Rauchen","9:bei Eltern",
        "10:Auto->Uni","11:Bus->Uni","12:Fahrrad->Uni","13:Fuss->Uni",
        "14:Mathe.LKurs","15:Abi.Note","16:Partei")))

"frabo96"<-
structure(.Data = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,
        18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,
        36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,
        54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,
        72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,
        90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,
        106,107,108,109,110,111,112,113,114,115,116,117,118,119,
        120,121,122,123,124,125,126,127,128,129,130,131,132,133,
        134,135,136,137,138,139,140,141,142,143,144,145,146,147,
        148,149,150,151,152,153,154,155,156,157,158,159,160,161,
        162,163,164,165,166,167,168,169,170,171,172,173,174,175,
        176,177,178,179,180,181,182,183,184,185,186,187,188,189,
        190,191,192,193,194,195,196,197,198,199,200,201,202,203,
        204,205,206,207,208,209,210,211,212,213,214,215,216,217,
        218,219,220,221,222,223,224,225,226,227,228,229,230,231,
        232,233,234,235,236,237,238,239,240,241,242,243,244,245,
        246,247,248,249,250,251,252,253,254,255,256,257,258,259,
        260,261,262,263,264,265,1,1,1,1,1,1,4,4,2,1,1,1,4,4,
        4,4,1,1,1,1,1,2,1,1,1,1,1,4,1,1,1,1,1,1,-1,1,1,2,
        1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,2,1,1,2,2,1,1,1,1,1,1,1,2,1,1,1,1,1,2,
        1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,1,1,2,2,1,2,1,
        1,1,1,1,1,1,1,1,1,1,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,1,1,1,1,2,1,1,1,1,1,1,1,2,
        1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,2,
        1,2,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,1,
        1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,
        4,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,-1,0,1,0,0,1,1,0,
        1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,-1,0,1,
        1,0,0,1,1,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
        0,0,0,0,0,0,1,0,0,1,0,1,1,0,0,0,1,0,1,0,1,1,0,1,
        1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,
        0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,0,1,1,1,0,0,
        0,0,0,0,0,0,1,1,1,0,1,1,0,0,0,0,1,1,0,0,0,1,1,1,
        0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
        1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,
        0,0,0,1,0,0,0,0,0,0,1,0,23,21,22,19,20,21,21,22,20,
        20,22,21,20,20,19,26,21,20,25,26,22,19,21,20,20,19,23,
        20,21,22,20,21,18,21,20,24,24,19,23,24,20,20,20,21,19,
        20,23,20,20,21,20,20,24,19,21,20,28,24,20,20,23,21,20,
        21,19,21,21,20,23,20,22,21,23,19,20,23,21,21,21,20,21,
        23,20,22,21,28,21,22,23,22,22,20,22,21,19,19,19,20,20,
        21,24,19,22,20,23,20,21,22,23,20,23,20,18,21,21,24,23,
        21,21,20,20,24,19,23,22,21,20,24,21,19,21,20,23,20,20,
        20,22,20,20,20,20,21,20,21,21,20,20,22,23,19,20,20,19,
        23,27,21,21,24,27,20,21,21,20,19,19,19,21,19,22,19,20,
        24,21,20,23,21,21,27,20,18,19,20,24,20,29,26,25,22,24,
        26,30,20,20,23,21,20,22,22,21,25,22,20,21,22,20,19,19,
        22,23,20,19,19,20,20,19,22,20,27,27,20,24,21,20,21,20,
        24,22,23,23,20,20,21,21,21,20,22,19,19,19,23,20,23,21,
        23,21,20,20,19,21,24,20,20,20,20,21,20,20,20,21,19,22,
        21,20,20,22,171,173,176,170,168,175,198,170,177,198,170,
        173,201,168,205,176,184,183,184,180,190,180,172,182,176,
        168,176,180,184,190,188,177,172,160,186,184,168,168,183,
        180,166,180,171,170,175,175,180,180,191,176,165,184,186,
        180,164,180,182,178,183,178,178,188,170,179,180,182,165,
        182,197,193,181,178,180,183,175,179,182,188,183,173,175,
        176,182,178,171,173,190,180,178,180,187,170,186,181,165,
        190,174,177,180,192,175,169,187,165,193,181,180,182,163,
        169,183,182,170,175,184,159,178,176,180,190,175,180,170,
        173,185,183,187,186,168,170,175,181,180,182,180,175,186,
        170,185,168,185,191,192,160,182,185,161,185,182,170,170,
        180,160,173,164,170,187,190,180,192,187,186,168,167,163,
        175,194,164,170,177,190,185,176,175,167,179,195,180,180,
        166,174,180,190,160,186,184,182,185,180,180,181,182,172,
        166,185,178,183,183,180,177,191,196,187,183,196,170,164,
        196,167,192,178,176,169,182,196,170,180,169,184,182,185,
        183,177,185,179,175,176,180,183,188,188,175,172,180,170,
        185,172,165,183,175,185,160,188,186,171,178,182,185,188,
        194,180,165,161,180,185,188,178,176,178,175,192,171,190,
        171,169,60,66,68,70,60,69,84,55,63,85,59,63,93,62,130,
        69,72,78,74,70,92,55,60,76,55,59,63,65,67,82,75,74,65,
        55,80,78,68,62,75,80,57,70,59,65,-1,-1,70,70,155,74,54,
        83,83,90,68,78,73,70,75,74,73,83,85,70,71,90,60,75,107,
        96,65,71,73,75,73,62,75,88,92,58,60,73,78,78,62,68,86,
        71,80,65,72,50,73,77,53,81,62,55,75,100,60,51,86,55,81,
        63,67,79,50,57,76,70,60,69,95,52,79,65,78,75,72,75,55,
        55,79,79,75,72,57,65,64,73,80,85,78,60,80,67,66,67,75,
        84,130,52,80,80,49,76,82,60,52,67,54,63,54,55,91,93,76,
        83,78,74,64,58,51,55,80,58,55,63,82,75,64,56,75,71,81,
        74,56,55,65,72,87,53,72,80,61,75,67,70,73,91,75,56,76,
        62,88,87,75,75,85,95,75,80,76,70,52,95,48,90,80,69,68,
        60,88,75,72,62,76,79,75,77,85,77,69,70,65,78,73,86,74,
        60,77,65,65,80,62,54,63,65,69,60,86,80,58,60,81,62,82,
        82,74,53,57,77,75,77,63,80,61,75,78,65,83,60,70,41,41,
        41,40,38,41,46,49,41,46,39,39,48,39,50,43,44,42,43,43,
        45,40,40,43,42,39,42,42,43,44,43,42,42,38,43,45,39,39,
        43,41,39,41,39,42,-1,-1,42,42,49,43,39,45,44,45,39,43,
        44,42,45,42,42,44,41,42,44,45,41,-1,48,46,42,42,43,45,
        43,43,43,46,43,40,41,43,44,44,42,41,44,42,42,43,43,38,
        43,44,37,45,39,38,43,46,41,38,43,39,46,40,39,44,37,39,
        43,43,38,43,44,37,44,42,43,45,42,44,42,37,43,44,45,42,
        38,41,41,44,44,40,44,42,43,42,44,40,43,44,46,37,44,45,
        38,45,44,40,38,42,40,41,37,39,46,46,43,46,43,44,41,38,
        37,39,43,39,39,43,45,-1,43,38,38,42,45,43,40,38,38,43,
        45,38,42,43,42,43,42,-1,-1,44,42,39,46,43,45,45,43,43,
        45,49,45,45,46,42,36,45,36,45,42,42,42,42,45,42,42,40,
        44,41,43,45,45,45,43,43,42,43,42,44,46,42,42,41,39,42,
        40,39,42,41,45,37,43,45,40,43,45,44,46,45,43,38,37,43,
        43,42,39,43,43,43,43,41,44,-1,39,1,1,1,1,1,4,1,2,1,
        1,4,0,3,2,1,1,6,1,2,1,0,0,1,1,0,0,2,1,2,1,0,0,2,
        3,0,1,1,1,0,1,0,1,1,1,1,2,2,1,1,1,3,4,3,1,2,2,3,
        0,1,1,2,2,0,2,3,7,3,1,1,1,2,3,1,1,1,3,0,1,1,0,2,
        0,3,1,1,1,0,1,1,4,1,3,1,3,1,1,5,3,3,2,1,1,2,1,2,
        1,1,3,2,2,-1,0,0,1,1,1,1,1,0,1,4,2,2,0,1,0,1,3,1,
        1,1,3,0,1,1,1,1,1,3,2,2,0,2,3,1,1,1,1,0,1,1,1,3,
        0,0,3,4,1,1,2,0,0,5,3,1,2,2,1,0,3,1,1,2,1,0,1,1,
        1,1,2,2,2,1,3,1,0,1,1,0,1,4,0,1,0,1,1,1,4,1,4,2,
        1,1,1,1,2,1,1,0,1,1,5,2,0,2,5,2,1,3,1,1,4,4,1,0,
        3,1,1,1,1,1,1,1,3,0,1,2,3,0,1,0,1,1,3,0,0,3,2,0,
        1,1,4,4,2,0,1,3,3,2,0,1,2,2,0,1,2,2,2,1,1,1,1,1,
        1,2,5,1,1,1,2,1,1,1,2,2,1,1,1,1,1,1,1,2,1,1,1,1,
        1,2,1,3,1,2,1,1,1,2,1,1,-1,-1,3,2,1,1,3,1,3,2,2,
        3,1,1,1,1,3,2,1,3,1,8,3,1,3,2,3,3,2,1,2,1,1,1,2,
        1,2,1,1,1,2,1,1,1,2,5,2,4,1,3,1,1,6,4,3,2,2,2,1,
        1,3,1,1,1,3,3,-1,1,1,2,1,2,1,2,1,1,4,2,3,1,1,1,2,
        3,2,2,1,2,1,1,1,2,1,1,1,1,1,1,2,4,1,2,1,2,2,2,2,
        2,1,1,1,2,4,2,1,1,1,1,5,4,2,3,1,2,1,2,2,1,1,1,1,
        2,1,1,1,1,3,1,1,1,2,1,1,2,1,1,1,1,1,1,2,2,1,5,2,
        1,2,1,1,1,1,1,2,1,1,1,1,3,3,1,3,5,3,1,3,1,2,5,4,
        2,1,3,1,2,1,1,1,1,2,1,1,1,1,1,1,2,1,2,2,1,1,1,1,
        3,1,2,2,3,4,1,1,2,2,4,1,1,2,1,2,1,2,0,0,0,0,0,0,
        0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,
        1,0,1,1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0,1,1,1,1,1,
        1,0,1,1,1,1,0,0,1,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,
        0,0,0,1,1,0,0,0,0,0,1,0,1,1,0,0,1,1,1,0,0,0,0,0,
        0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,0,0,0,0,1,1,1,
        1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,
        1,1,0,1,1,0,1,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,
        0,1,1,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,1,0,
        1,1,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,1,1,1,1,1,1,1,
        1,1,0,1,0,0,0,0,0,1,1,1,0,1,0,0,1,1,0,0,1,0,0,0,
        1,0,0,0,1,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,0,0,0,0,
        0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1,
        0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,
        0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,
        1,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,0,0,0,1,0,1,
        1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0,1,0,0,0,
        1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,0,0,1,1,
        0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,
        1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,1,
        1,1,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,
        0,1,0,1,0,0,1,0,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,1,
        0,0,0,0,0,1,1,1,0,0,1,0,1,1,1,0,1,0,0,0,2,1,3,2,
        2,2,2,1,2,2,2,4,1,1,2,2,1,1,2,2,1,1,2,1,1,3,1,3,
        1,1,1,2,4,1,1,2,2,1,1,1,2,1,3,1,4,4,2,2,1,1,2,2,
        1,1,2,1,1,1,1,3,5,2,1,2,1,2,4,1,1,1,3,3,3,2,2,4,
        1,2,1,2,2,1,1,1,1,2,1,4,1,1,2,4,1,1,1,2,2,3,1,2,
        1,1,2,2,1,1,1,4,1,4,2,1,2,2,2,4,4,2,1,1,2,1,1,1,
        2,2,1,1,1,2,2,2,2,1,2,2,2,2,1,1,1,3,3,1,2,1,2,1,
        3,1,1,1,1,1,1,2,2,2,1,1,1,2,1,4,2,2,2,2,1,2,3,2,
        2,1,1,1,1,2,1,2,1,2,1,1,1,1,2,4,1,4,2,1,2,1,1,1,
        2,2,2,2,1,1,1,1,1,2,4,1,1,1,2,1,2,2,1,1,1,1,1,4,
        1,2,1,3,1,1,4,1,1,2,1,1,1,2,2,1,2,2,1,1,2,2,1,1,
        1,1,1,2,2,2,1,1,1,1,1,1,4,2,1,1,1,2,1,1,1,1,1,1,
        0,1,0,0,1,1,1,0,1,0,0,0,-1,0,1,0,0,1,0,1,1,1,0,0,
        0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,
        0,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,1,1,1,0,0,1,0,0,
        0,1,0,1,1,0,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,1,
        1,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,1,
        1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,0,0,1,1,
        1,1,0,1,1,0,1,1,0,0,1,1,0,1,1,1,0,0,0,0,0,1,0,0,
        0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,
        1,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,0,0,1,1,1,
        0,1,0,1,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,0,1,
        1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,1,0,1,0,1,1,1,100,
        25,100,42,40,5,100,0,40,40,0,40,60,15,45,999,30,35,60,
        -1
        ,150,90,15,120,80,20,0,10,78,38,93,100,38,0,5,35,35,
        20,0,700,3,20,20,0,8,0,0,10,60,50,20,30,45,10,6,200,
        -1
        ,2,50,90,60,60,700,20,70,86,42,120,80,50,40,55,300,170,
        0,0,50,40,200,50,0,60,270,4,40,120,120,150,70,15,80,0,
        10,0,30,20,30,3,300,50,10,15,8,10,60,15,30,50,20,15,0,
        40,110,10,150,100,50,70,60,50,123,50,40,40,50,200,60,
        100,20,40,40,34,40,200,25,30,25,3,90,70,10,130,130,8,
        -1,20,10,130,50,30,100,140,55,60,50,150,160,40,50,50,70,
        30,40,3,30,20,50,40,80,30,20,143,200,35,20,40,50,40,50,
        32,40,50,270,0,30,100,30,25,25,200,200,150,50,25,80,65,
        30,150,80,300,50,200,60,30,150,100,10,8,20,100,60,150,
        30,200,40,0,93,0,60,40,65,12,13,70,50,250,220,45,500,
        80,150,30,130,160,100,80,30,30,20,150,75,70,100,30,120,
        450,30,20,50,100,50,0,20,170,150,25,50,15,112,45,350,0,
        40,60,40,6.8499999999999996,8.5999999999999996,10,
        2.3399999999999999,3.1499999999999999,7.8300000000000001,
        7.4299999999999997,0,22,4.4000000000000004,3.2400000000000002,
        8.5600000000000005,9.0600000000000005,20,6.2699999999999996,
        8.2300000000000004,9.0999999999999996,5.9500000000000002,10,10,2,
        21.300000000000001,13.41,22.710000000000001,9.0800000000000001,
        7.8300000000000001,2.0499999999999998,4,3.2200000000000002,3.23,
        6.2999999999999998,14.720000000000001,5.8700000000000001,21,1.05,
        9.5,6,-1,-1,8.4000000000000004,9.0399999999999991,2,-1,
        0.050000000000000003,-1,-1,2,21.16,25.66,20,2,
        5.7000000000000002,4.5,8.8000000000000007,7.2599999999999998,
        0.10000000000000001,9.75,9.2200000000000006,52,7.2999999999999998,
        -1
        ,20,8.9100000000000001,9.7300000000000004,4.8200000000000003,
        8.6199999999999992,3,6.0999999999999996,10.609999999999999,13.42,
        1.5700000000000001,4.2800000000000002,7.0599999999999996,20,
        6.4000000000000004,5,4.2999999999999998,7.3499999999999996,7,10,2,
        10,9,4.5,5.5999999999999996,5.4100000000000001,4.7599999999999998,
        3.5,12.5,3.4300000000000002,7.1399999999999997,6,
        6.0800000000000001,3,2.9500000000000002,20,1.6000000000000001,-1,
        2.8999999999999999,7.5,7.71,7,6.5,4.2999999999999998,
        6.0199999999999996,8.9000000000000004,12,10.09,4.0499999999999998,
        5,-1,7.1200000000000001,7.5999999999999996,9.6500000000000004,7,
        0.46000000000000002,8.5800000000000001,21.539999999999999,8.75,9,
        3.8300000000000001,7.0800000000000001,8.3499999999999996,12.73,
        11.43,6.3499999999999996,4.7999999999999998,6.96,-1,
        8.1799999999999997,4.6500000000000004,15,18,2,3.7999999999999998,
        7,1,4,7.0599999999999996,7,7.96,4.3799999999999999,
        7.4800000000000004,5,8.2200000000000006,5.2000000000000002,10,2.5,
        7,9.1999999999999993,13,0.45000000000000001,0,5,10,15.74,19.43,
        12,7,20,10,20,1,7.6200000000000001,9,12,0.5,
        5.5499999999999998,4.4699999999999998,14,12.5,9.5999999999999996,
        13,5,6.5,22.32,17,3.3700000000000001,20,0.59999999999999998,15,
        11.199999999999999,8.5500000000000007,5.3499999999999996,16.75,
        7.7400000000000002,6.2000000000000002,2.7599999999999998,
        3.3999999999999999,10,3.1000000000000001,0.90000000000000002,
        0.94999999999999996,5,5.4000000000000004,4.7400000000000002,3.5,
        3.25,8.3499999999999996,14.800000000000001,8,14,6,
        4.2000000000000002,2.5,13.449999999999999,4.5,5,5,
        12.640000000000001,5.0999999999999996,10.5,6,4.9000000000000004,4,
        0.10000000000000001,1.8,0,10.300000000000001,6,8.7200000000000006,
        7.7000000000000002,15,7,9,11.99,0.33000000000000002,19,7,13.73,
        7,25,7,4.5,6.7400000000000002,16.829999999999998,7,
        4.6799999999999997,4.6900000000000004,5,13,2.6200000000000001,0.01,
        15,11.960000000000001,2,20,6,3.1299999999999999,12,9,9,
        10.300000000000001,9.4000000000000004,7.5,5,3,27,20,5,
        7.3300000000000001,15,6.4199999999999999,5.3799999999999999,
        5.2999999999999998,2,1,2,2,3,1,2,1,3,2,2,2,1,1,2,1,2,
        2,3,1,1,3,1,1,2,4,1,3,2,2,2,2,2,2,3,3,3,3,2,1,5,
        3,2,2,2,2,3,2,2,1,3,2,3,1,2,2,5,4,1,2,2,1,2,2,2,
        2,2,1,2,2,1,3,2,3,2,5,2,4,1,2,2,1,1,2,2,4,2,3,2,
        2,1,1,2,3,2,2,2,4,5,1,1,3,3,2,3,3,3,1,2,3,3,1,2,
        1,2,5,3,2,3,1,2,1,1,2,2,2,1,1,4,3,2,3,2,2,3,2,2,
        1,1,1,3,2,2,2,2,1,3,2,2,3,2,2,3,2,3,1,3,2,3,3,2,
        5,2,2,2,2,2,4,3,3,1,2,1,3,3,5,1,1,3,2,1,1,1,3,3,
        1,3,1,3,2,3,2,3,2,2,3,2,1,1,2,1,2,1,1,1,1,2,2,1,
        3,2,2,3,2,3,1,3,1,2,2,2,1,2,1,4,4,2,2,5,2,5,1,2,
        4,3,2,2,3,1,1,2,3,3,2,2,2,3,4,2,2,2,1,1,2,1,5,2,
        1,2,2,1,1,1,4,2,1,0,1,0,0,1,1,0,1,0,0,0,1,1,0,-1,
        0,1,0,0,1,0,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,1,0,
        1,0,0,0,1,1,1,1,1,1,0,0,0,1,0,1,0,0,1,1,1,0,1,1,
        0,0,0,0,0,0,0,0,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,
        0,1,1,1,1,0,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,0,0,
        0,1,0,0,1,1,1,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,
        1,1,0,0,1,1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,1,1,1,1,
        0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,0,
        1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,
        0,0,1,1,0,0,1,0,1,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,
        0,0,1,0,1,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,
        0,1,1,0,1,0,0,0,1,2,2,4,1.3,3,-1,1,4,
        3.2999999999999998,3,3,3.2999999999999998,2,2,1,-1,3,2.5,5,
        -1,5,4,3,4,3,4,5,1,1,4,4.2999999999999998,
        3.2999999999999998,2,4,-1,3,4,3.2999999999999998,5,5,1.3,3,1,
        2,1,-1,-1,3,4,4,1.7,3,3,1,4,4,3,5,2,2,3,2,
        3.2999999999999998,2,3,2.2999999999999998,4,5,2,3,1,3,3,6,3,
        -1,-1,4,1,2.7000000000000002,2,4,-1,2,3,-1,3,3,3,4,1,
        2.7000000000000002,3,3,3,2,3,1.7,4,4,2,1.3,
        2.2000000000000002,1,4,3,1.7,3,4,3,3,4.2999999999999998,3,3,
        4,3,3,4,3,4.7000000000000002,4,-1,4,3,2,5,2,-1,
        3.2999999999999998,2,3.7000000000000002,2.7000000000000002,-1,4,3,
        1,1.7,4,4,3,1.3,4,2,6,2.2999999999999998,3,4,3,-1,
        3.7000000000000002,3,4,3,3,-1,3,4,2,3,3,2.7000000000000002,
        2.2999999999999998,2,3,3,-1,3,1.3,2.7000000000000002,
        2.2999999999999998,1.3,2.2999999999999998,2.2999999999999998,1.7,3,
        2,5,4,-1,-1,3,1,-1,1,1,2,1,3,-1,1.5,-1,2,
        3.7000000000000002,3,3.2999999999999998,4,2,-1,3,4,3,4,-1,2,
        2,3,3,-1,3,3,4,3.7000000000000002,6,1,2,4.7000000000000002,
        2.2999999999999998,-1,-1,6,4,1.3,5,2.7000000000000002,1.3,
        3.2999999999999998,4,-1,4,-1,3,4,3,3,1.7,5,3,2,
        3.7000000000000002,3.2999999999999998,1.7,2,3,3,1,3,
        4.2999999999999998,4,2.2999999999999998,3,4,2.2999999999999998,3,
        2.7000000000000002,2.7000000000000002,1.3,2.7000000000000002,
        3.7000000000000002,4,3,5,3,3,5,3,2.1000000000000001,
        2.2000000000000002,2.8999999999999999,2.7000000000000002,
        2.6000000000000001,2.8999999999999999,1.3,3.3999999999999999,2,3,
        3.2999999999999998,2,1.8999999999999999,2.7000000000000002,
        2.2999999999999998,-1,2.7999999999999998,2.5,3.1000000000000001,
        3.2999999999999998,3,2,2.8999999999999999,3,2.6000000000000001,
        2.2000000000000002,3.6000000000000001,1.3,2.6000000000000001,
        3.2999999999999998,3.2000000000000002,2.5,2.3999999999999999,
        3.3999999999999999,3.3999999999999999,2,2.7000000000000002,
        2.1000000000000001,3.5,2.5,1.5,2.8999999999999999,1.5,3,-1,-1,
        -1
        ,2.6000000000000001,3,3.7999999999999998,2.7000000000000002,
        2.2000000000000002,3,1.5,3,2.5,3,3.1000000000000001,
        2.7999999999999998,2.6000000000000001,3.2000000000000002,
        2.2000000000000002,3.2999999999999998,1.3,2.8999999999999999,
        3.6000000000000001,3.3999999999999999,3.6000000000000001,3,
        2.7000000000000002,1.2,2.5,3,3,3.1000000000000001,-1,3.5,
        2.2000000000000002,3,3.2999999999999998,-1,3.2000000000000002,3,
        2.6000000000000001,2.5,3.2000000000000002,3.3999999999999999,
        2.2999999999999998,3.1000000000000001,2.8999999999999999,1.3,
        2.7999999999999998,2.7999999999999998,2.7000000000000002,
        2.7000000000000002,1.8999999999999999,2.6000000000000001,
        1.6000000000000001,3.5,2.8999999999999999,3,1.8,2.3999999999999999,
        1.8,2,2.8999999999999999,2.2000000000000002,2.6000000000000001,
        2.8999999999999999,2.8999999999999999,3.2000000000000002,
        3.7000000000000002,2.1000000000000001,3,3.3999999999999999,
        3.7000000000000002,3.5,3.6000000000000001,2.2999999999999998,
        2.7999999999999998,3,3.5,3.3999999999999999,3.2000000000000002,
        2.2999999999999998,3.2999999999999998,3.2999999999999998,3,
        2.6000000000000001,2.5,2.7999999999999998,2.7000000000000002,
        2.7999999999999998,3.2000000000000002,3,1.3,2.6000000000000001,
        3.3999999999999999,2.5,3.7000000000000002,1.7,3.2999999999999998,
        3.3999999999999999,2.8999999999999999,2.5,2.7999999999999998,
        2.1000000000000001,2.5,2.2999999999999998,2.7000000000000002,
        3.1000000000000001,3.2999999999999998,2.1000000000000001,
        2.8999999999999999,1.6000000000000001,3,3.5,2.3999999999999999,2.5,
        2.8999999999999999,2.7000000000000002,1.8,1.7,2.7999999999999998,3,
        2.2000000000000002,3.1000000000000001,1.6000000000000001,
        3.2999999999999998,2.1000000000000001,1.8999999999999999,
        2.6000000000000001,2.7000000000000002,3.2999999999999998,
        2.7000000000000002,2.2999999999999998,3.2000000000000002,4,
        2.8999999999999999,2.7000000000000002,2.7999999999999998,1.7,
        3.3999999999999999,1.3,2,2.2999999999999998,1.6000000000000001,3,
        2.7999999999999998,1.2,3.6000000000000001,2,3.2000000000000002,
        2.7000000000000002,2.7000000000000002,2.2999999999999998,3,
        2.2000000000000002,2.7000000000000002,3.1000000000000001,
        2.8999999999999999,3.2999999999999998,2.2000000000000002,2,
        2.2999999999999998,2.2000000000000002,3.2999999999999998,
        2.1000000000000001,3,3,3,3.2999999999999998,3.2999999999999998,
        1.8999999999999999,2.7999999999999998,3.2999999999999998,
        3.3999999999999999,2.5,3.2000000000000002,2.7999999999999998,
        2.7000000000000002,3,3.5,3.2000000000000002,2.2999999999999998,3,
        3.6000000000000001,3.3999999999999999,2.8999999999999999,
        2.6000000000000001,3.5,3.5,3.2000000000000002,3.6000000000000001,2,
        3.6000000000000001,2.7999999999999998,1.8999999999999999,
        2.1000000000000001,3.1000000000000001,2.2000000000000002,2,
        3.3999999999999999,3.1000000000000001,2.7999999999999998,
        2.6000000000000001,3.2000000000000002,2.7999999999999998,2.5,
        2.7000000000000002,2.2999999999999998,3.2999999999999998,3,
        3.2999999999999998,2.7999999999999998,3.2999999999999998,
        2.7000000000000002,3.2000000000000002,2.7999999999999998,
        3.2999999999999998,2.6000000000000001,2.8999999999999999,
        3.2999999999999998,3.2999999999999998,3.2999999999999998,1,0,0,0,
        0,1,1,0,1,0,0,1,1,1,1,-1,1,1,1,1,1,1,0,1,1,0,0,1,
        1,0,0,0,1,0,0,1,0,1,0,1,1,0,0,1,1,1,0,1,1,0,0,0,
        1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,1,0,0,0,
        0,1,0,1,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,1,0,
        0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,0,1,0,0,1,
        1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,1,0,1,1,0,1,1,0,1,
        0,0,1,1,0,0,1,1,1,1,1,0,1,0,0,1,1,0,0,0,1,0,0,0,
        1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1,
        1,1,1,1,0,1,1,1,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,
        1,0,1,0,1,1,0,1,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,0,
        0,1,1,0,0,0,0,1,0,0,1,1,0,1,0,1,0,1,1,1,0,0,0,0,
        0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,-1,1,0,0,1,1,
        1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,-1,1,1,0,0,
        0,-1,-1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,
        1,0,0,1,0,0,0,1,1,1,1,1,1,0,-1,1,0,0,0,0,1,0,0,0,
        0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,1,0,0,1,0,1,0,0,
        1,0,1,1,0,0,-1,-1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,-1,
        0,-1,0,1,1,0,0,0,0,0,0,0,1,-1,0,-1,1,1,0,1,0,0,0,
        1,0,1,-1,1,-1,-1,1,1,0,-1,0,0,1,1,0,0,1,0,0,0,0,0,
        -1,0,0,-1,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,
        0,1,1,-1,0,0,0,1,1,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,
        0,0,1,1,-1,0,1,1,0,-1,1,0,0,-1,1,0,0,0,0,1,0,1,0,
        1,1,0,0,1,2,5,3,-1,1,3,1,1,1,2,3,2,3,2,1,-1,1,1,
        1,1,-1,2,2,2,4,1,5,3,2,3,2,2,2,2,2,1,1,1,1,3,3,2,
        4,2,1,-1,2,2,3,1,2,-1,-1,2,1,3,1,1,1,5,1,2,2,2,3,
        2,3,1,2,3,4,2,2,2,3,1,4,2,3,-1,1,2,2,3,2,1,1,-1,
        1,1,2,1,3,1,1,2,1,2,2,3,2,1,2,1,2,4,3,5,1,4,1,2,
        1,1,2,1,2,2,1,1,2,1,2,3,3,1,1,-1,-1,2,2,2,3,2,1,
        2,1,1,3,2,2,1,2,-1,2,2,2,3,2,1,3,1,2,3,1,1,2,-1,
        2,-1,4,2,2,3,1,1,3,2,5,2,3,1,-1,-1,2,3,1,-1,2,2,2,
        2,1,4,3,3,1,2,2,2,-1,1,1,-1,2,2,1,3,2,3,3,1,1,1,
        2,2,2,2,2,2,3,1,1,1,3,1,-1,1,1,2,2,2,1,1,2,3,3,1,
        2,1,1,2,3,2,3,1,3,2,3,1,2,-1,2,1,3,1,-1,3,2,1,-1,
        2,1,2,3,5,1,1,3,2,1,1,4,1,1,4,3,4,8,1,8,1,6,-1,8,
        1,8,7,2,4,1,4,1,8,1,8,1,2,2,6,1,4,8,3,8,1,7,8,7,
        7,8,8,1,1,8,8,3,2,8,8,8,1,2,2,7,7,7,2,8,1,8,4,8,
        8,4,8,8,8,2,1,6,2,1,4,8,8,7,1,1,-1,1,2,1,-1,7,7,
        4,1,3,2,3,1,2,4,3,8,1,7,7,7,2,3,1,2,7,1,2,7,1,1,
        4,3,4,1,4,1,8,3,3,2,8,4,1,7,4,8,8,4,4,1,4,2,8,8,
        1,1,8,2,7,3,8,8,1,8,3,4,4,2,2,1,8,1,8,1,7,7,2,1,
        4,1,7,7,1,1,4,4,7,-1,1,2,1,8,2,8,8,1,8,8,8,2,1,4,
        1,8,8,3,1,8,1,1,4,1,1,1,3,1,8,-1,3,3,4,2,8,3,1,1,
        8,8,1,1,1,1,1,2,1,8,2,2,2,2,2,8,4,7,3,2,3,1,1,7,
        2,7,4,1,1,8,8,3,3,1,2,2,4,2,2,8,3,1,2,1,2,3,4,7,
        8,4,4,8,4,4,2,7,7,4,1,7,7,4,4),.Dim = c(265,23),
        .Dimnames = list(c("1","2","3","4","5","6","7","8","9","10",
        "11","12","13","14","15","16","17","18","19","20","21","22",
        "23","24","25","26","27","28","29","30","31","32","33","34",
        "35","36","37","38","39","40","41","42","43","44","45","46",
        "47","48","49","50","51","52","53","54","55","56","57","58",
        "59","60","61","62","63","64","65","66","67","68","69","70",
        "71","72","73","74","75","76","77","78","79","80","81","82",
        "83","84","85","86","87","88","89","90","91","92","93","94",
        "95","96","97","98","99","100","101","102","103","104","105",
        "106","107","108","109","110","111","112","113","114","115",
        "116","117","118","119","120","121","122","123","124","125",
        "126","127","128","129","130","131","132","133","134","135",
        "136","137","138","139","140","141","142","143","144","145",
        "146","147","148","149","150","151","152","153","154","155",
        "156","157","158","159","160","161","162","163","164","165",
        "166","167","168","169","170","171","172","173","174","175",
        "176","177","178","179","180","181","182","183","184","185",
        "186","187","188","189","190","191","192","193","194","195",
        "196","197","198","199","200","201","202","203","204","205",
        "206","207","208","209","210","211","212","213","214","215",
        "216","217","218","219","220","221","222","223","224","225",
        "226","227","228","229","230","231","232","233","234","235",
        "236","237","238","239","240","241","242","243","244","245",
        "246","247","248","249","250","251","252","253","254","255",
        "256","257","258","259","260","261","262","263","264","265"),
        c("1:lfd.Nr","2:Fach","3:Geschlecht","4:Alter","5:Groesse",
        "6:Gewicht","7:Schuhgroesse","8:Geschwister","9:?te Kind",
        "10:Rauchen","11:bei Eltern","12:Art->Uni","13:Autobesitz","14:#CD",
        "15:Bargeld","16:Coca-Cola","17:Mathe.LKurs","18:Abi.Mathe.Note",
        "19:Abi.Note","20:Bi gewuenscht","21:Film","22:Film-Urteil",
        "23:Partei")),class = "matrix")

#:7


#8:
frabo97<-
structure(.Data = c(2,2,1,2,1,1,2,2,2,1,2,2,2,1,1,2,1,1,2,2,
        1,2,2,2,1,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2,2,
        1,1,2,1,1,1,1,1,1,2,2,2,1,1,2,1,2,2,2,2,2,1,1,2,
        2,2,1,2,2,2,2,2,1,2,2,1,1,1,2,1,1,1,2,1,1,2,2,2,
        2,1,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,2,1,1,2,1,
        2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,1,1,
        2,2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,2,1,1,1,2,2,1,1,
        1,1,2,2,2,2,2,1,2,2,2,2,2,1,1,2,1,1,1,2,2,1,1,2,
        2,2,2,2,2,2,2,188,185,176,182,135,170,172,175,183,167,
        173,174,175,160,167,180,170,170,186,175,173,180,179,187,
        165,181,186,165,179,161,180,182,183,173,182,187,180,180,
        176,181,180,185,183,180,165,164,178,170,165,172,171,167,
        175,185,207,193,165,165,185,172,183,185,188,180,186,180,
        168,176,180,176,180,168,191,194,185,172,165,182,170,173,
        163,169,181,161,164,178,178,160,165,186,187,182,178,160,
        181,174,195,182,191,170,184,190,184,163,175,188,185,180,
        175,175,178,186,159,165,170,162,175,190,188,184,180,170,
        170,154,170,180,180,174,171,181,180,163,178,160,175,180,
        184,0,169,170,168,182,180,176,177,175,170,183,195,190,182,
        190,163,187,188,183,178,160,175,169,184,178,172,175,164,
        175,182,180,184,185,185,170,193,176,197,183,182,171,168,
        183,167,170,178,175,174,170,168,188,188,180,183,171,180,
        175,183,68,75,63,85,47,63,70,85,98,50,71,67,63,56,56,
        75,53,52,76,70,59,100,56,86,46,79,83,50,70,48,100,69,
        65.5,60,70,80,72,70,68,73,73,83,70,78,57,66,72,57,54,
        61,60,56,57,75,118,80,54,50,72,70,77,72,90,73,75,75,52,
        70,85,67,70,52,94,79,87,75,60,67,69,69,62,53,75,53,56,
        53,60,60,58,82,98,70,74,57,74,65,90,78,73,0,83,80,77,
        49,65,83,80,70,65,75,65,74,55,53,76,49,80,75,65,78,63,
        60,65,74,62,57,66,68,80,72,76,49,76,55,73,78,75,0,57,
        63,60,72,78,67,71,70,65,78,73,85,68,79,45,95,83,65,65,
        53,58,70,70,70,58,68,50,67,65,68,85,85,85,70,78,75,110,
        94,70,60,56,76,57,60,70,80,65,64,53,55,90,58,72,69,67,
        60,90,20,22,26,21,21,21,29,22,21,22,22,22,23,19,25,31,
        20,19,20,20,19,32,29,20,19,21,21,19,22,21,24,21,20,19,
        19,20,22,20,20,20,21,22,23,25,22,19,20,23,20,19,20,19,
        20,19,21,21,20,19,20,22,25,24,24,21,22,22,22,22,21,20,
        20,22,20,27,26,22,35,21,25,20,21,20,22,20,19,26,20,22,
        19,21,22,23,23,30,21,22,22,22,29,20,21,22,20,20,20,21,
        21,20,22,21,22,21,19,20,23,23,24,20,20,24,20,19,22,23,
        20,20,20,19,20,23,26,19,21,26,28,23,20,20,21,19,20,22,
        20,21,21,21,19,22,20,20,21,20,21,27,20,20,21,20,20,20,
        21,22,21,19,21,21,20,21,21,30,21,20,22,24,21,24,21,22,
        20,26,23,19,19,20,20,21,21,21,21,21,21,21,20,22,19,2,
        3,3,3,2,2,1,1,1,2,2,5,2,2,3,3,2,2,3,2,3,3,3,4,3,
        3,3,1,3,2,2,3,2,3,3,2,2,2,2,3,2,3,2,2,2,3,1,3,2,
        2,2,3,2,5,3,2,2,3,3,5,3,1,3,3,3,3,4,3,1,2,2,1,2,
        2,3,3,3,3,2,3,3,3,3,2,3,3,2,3,3,4,3,2,2,2,2,2,3,
        2,5,3,3,2,5,2,5,2,3,2,2,3,3,2,2,2,1,3,2,3,2,2,2,
        2,3,3,1,1,1,2,3,3,2,2,2,3,1,2,3,3,3,2,2,3,3,3,3,
        2,3,2,5,3,2,3,2,2,2,2,2,3,2,4,3,3,2,2,2,2,2,5,2,
        2,3,5,2,2,2,3,2,2,3,3,2,3,2,1,1,3,2,3,1,2,2,1,3,
        2,2,2,5,80,5,50,50,10,7,15,40,25,2,3,20,30,3,35,40,
        6,25,40,43,6,8,50,0.20000000000000001,2,15,30,20,8,4,3,
        25,25,15,4,5,2,7,5,10,5,13,50,40,8,30,50,20,70,15,50,
        1,0.69999999999999996,5,65,12,25,40,4,8,5,2,10,10,40,8,8,
        20,40,8,5,3,1,5,25,5,12,25,20,20,7,60,60,20,2,22,30,
        8,15,10,6,50,1,20,5,0.59999999999999998,5,25,8,0.5,2,30,
        4,10,1,4,5,4,12,10,40,6,10,40,5,8,5,7,8,20,7,5,5,7,
        4,7,10,6,4,40,4,30,4,4,6,3,20,35,5,4,1.3999999999999999,
        5,3,10,20,7,3.5,10,10,8,25,10,5,7,15,64,25,50,3,
        0.59999999999999998,20,20,15,30,40,15,10,8,15,10,7,5,12,8,
        0.29999999999999999,4,20,5,20,22,40,5,5,10,30,10,3,8,10,
        7,12,19,10,42,43,40,41,38,39,42,42,45,37,42,42,42,38,
        39,45,38,37,43,42,41,43,42,47,38,44,45,40,39,38,43,44,
        43,40,41,44,43,45,43,44,43,43,43,42,39,39,43,39,37,40,
        40,38,39,43,49,45,39,38,44,39,43,43,44,43,46,43,39,42,
        43,43,40,41,45,46,45,40,39,44,42,40,38,37,45,39,38,39,
        38,39,38,45,46,42,43,36,42,40,47,42,42,39,46,45,44.5,
        37,42,43,43,46,42,42,43,44,38,38,41,37,44,46,44,43,43,
        41,41,44,42,42,42,42.5,42,42,45,38,43,37,42,43,45,42,
        38,39,40,43,46,41,45,44,42,44,47,43,42,45,39,46,45,42,
        42,37,40,40,43,42,40,42,38,42,45,42,44,44,46,40,44,43,
        48,45,43,40,38,43,37,39,40,43,41,40,39,43,45,40,41,41,
        42,42,43,0,0,2,0,0,0,1,0,0,1,1,1,2,0,0,2,1,0,0,0,
        1,0,1,2,0,1,1,2,0,1,0,3,1,2,0,0,1,0,1,0,1,3,1,1,
        1,0,2,0,0,0,0,1,2,0,0,1,0,0,0,1,0,0,0,0,0,1,0,1,
        1,1,0,2,0,1,0,1,1,0,1,1,1,1,2,0,1,0,0,0,0,0,0,0,
        0,0,0,2,0,1,1,1,1,1,1,0,0,3,1,0,1,0,2,0,1,1,2,1,
        2,1,0,1,1,2,0,0,1,6,1,0,1,1,1,1,1,1,2,0,1,0,1,1,
        0,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,0,1,0,0,0,1,
        0,2,1,3,0,1,0,1,1,0,0,0,0,1,1,1,3,0,0,1,0,1,0,1,
        3,0,2,1,0,0,1,1,1,1,1,2,5,2,3,0,1,0,0,0,0,1,1,0,
        0,0,2,1,0,0,0,0,0,0,1,0,1,0,0,0,3,2,0,0,1,1,0,2,
        1,1,0,0,1,0,1,1,0,0,0,0,1,1,0,1,0,0,0,1,1,1,1,0,
        0,1,0,1,0,1,0,1,0,3,0,1,2,1,1,1,0,0,3,1,1,1,1,1,
        2,0,1,0,0,2,3,1,1,1,0,0,0,1,0,1,0,1,0,1,0,2,1,5,
        1,2,0,0,0,0,0,2,0,1,1,1,1,0,1,0,2,0,0,0,0,1,0,0,
        1,0,1,1,0,1,0,0,3,2,0,1,0,0,1,1,0,0,1,1,0,0,0,0,
        1,1,0,1,1,0,0,1,0,0,0,0,0,1,1,2,2,0,0,1,1,0,1,2,
        2,1,0,1,1,0,3,0,1,0,17,7,3,4,0,28,8,23,9,7,8,5,1,
        3,7,13,16,5,24,7,7,2,12,7,7,0,3,25,3,12,0,5,5,7,0,
        5,0,25,0,7,66,6,7,17,5,13,23,492,6,14,7,21,13,6,9,7,
        2,2,0,0,17,47,21,0,5,13,6,0,6,11,8,6,7,
        3.1699999999999999,90,28,7,7,99,14,5,18,9,9,8,13,20,5,3,
        56,15,69,71,10,8,7,22,5,0,0,15,2604,6,28,0,8,9,13,0,
        24,7,13,2,777,0,0,13,15,7,16,5,318,3,0,2,31,3,7,0,4,
        4,7,1,7,11,0,16,3,7,13,0,13,666,13,1,1,0,13,23,9,7,
        2,7,7,0,9,16,22,1,16,7,21,13,7,17,0,0,
        3.1739999999999999,7,0,21,25,7,8,0,32,24,0,22,7,22,7,29,
        8,0,0,15,2,13,0,20,17,8,17,13,2,2,2,1,2,1,1,2,2,2,
        1,2,2,2,2,1,2,2,2,2,2,2,1,2,2,2,1,2,2,1,2,2,1,2,
        2,2,2,2,2,2,1,2,2,1,2,2,1,1,1,2,2,2,2,1,2,2,2,2,
        2,2,1,1,2,2,1,1,2,2,2,2,2,2,1,1,1,1,1,1,2,1,2,2,
        1,2,2,2,2,1,1,2,1,1,1,1,2,1,2,1,1,1,1,1,2,1,1,1,
        2,1,2,1,2,2,2,2,1,1,2,1,2,1,2,1,2,2,2,2,2,1,1,2,
        2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,1,
        2,2,2,2,2,1,2,2,2,2,2,2,2,1,2,1,2,1,2,1,1,2,2,2,
        1,1,1,2,2,1,1,1,1,2,1,2,2,1,1,1,2,500,600,105,400,
        0,0,600,6800,5,24,4000,30,200,70,603,2000,500,100,450,80,
        480,170,1500,10,2300,600,200,600,30,0,2000,3000,2000,4000,
        0,80,10,3,10,5,10,2500,15,0.10000000000000001,0,1600,2000,
        600,800,4050,2000,12,7,2500,1700,31,420,1600,1600,0,1200,
        30,200,65,3000,25,3500,6,90,100,35,400,0,3,50,20,200,20,
        10,50,800,200,18,4000,4000,10,1400,2200,120,20000,500,30,
        28,60,100,800,25,38,4000,0,50,2200,24,2.6000000000000001,
        1500,280,20,250,0,100,80,40,2500,30,3000,7000,300,36,20,
        18,1000,800,0,0.14999999999999999,800,23,2000,80,180,25,0,
        4500,18,10,30,15,0,30,0,1900,500,20,300,5,800,2000,100,
        2,210,20,2000,2000,3000,2500,30,80,350,5000,700,25,100,9,
        1200,1000,12,1000,2500,3500,6,45,2000,30,0,3200,900,200,
        50,6000,5000,3000,30,25,50,2000,3000,15,8500,800,30,150,0,
        60,13,30,20,3,3,7,4,0,1,3,3,0,4.5,3,3,3,2,1,1,5,5,
        5,3,3,0,0,4,4,4,5,3,0,6,0,3,2,2,0,4,5,5,5,5,0,5,
        5,3,3,4,5,3,0,0,4,5,5,4,4,3,5,1,4,3,3,5,3,4,3,3,
        0,0,2,0,0,1,0,0,0,0,0,6,4,4,3,3,2,3,3,4,3,0,3,5,
        4,6,4,0,0,3,3,3,4,2,0,4,5.5,5,4,5,4,5,2,0,0,0,4,
        1,0,0,0,0,4,4,0,5,5,4,0,3,4,3,4,2,0,4,1,0,0,0,6,
        6,6,0,4,3,3,3,0,0,5,0,2,0,7,4,4,0,3,0,0,6,4,5,3,
        0,0,2.5,0,0,2,0,2,0,5,7,0,5,8,5,5,5,5,0,0,0,0,3,
        4,0,3,4,0,0,4,0,5,4,0,1,1,1,1,2,1,1,1,2,2,1,1,1,
        1,2,2,2,1,1,1,1,2,2,1,1,2,2,2,1,2,2,1,1,1,2,2,2,
        1,2,2,2,2,1,2,1,1,2,2,2,1,1,2,2,1,2,2,1,2,2,2,1,
        1,1,1,1,1,2,1,1,1,1,1,2,2,2,1,2,1,1,2,2,1,1,2,2,
        2,1,2,1,1,1,2,1,2,2,2,2,2,2,1,1,2,2,2,1,1,2,1,2,
        1,2,1,2,1,2,2,1,1,1,2,1,1,2,1,2,2,1,2,2,1,0,1,2,
        1,1,1,1,1,2,1,2,1,2,1,1,2,2,1,2,2,2,1,2,1,1,1,2,
        1,1,2,2,1,2,1,1,2,1,2,2,2,1,2,1,1,1,1,2,1,2,2,2,
        1,1,2,2,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,
        1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,2,2,1,2,1,1,1,1,
        2,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,2,2,1,1,1,2,2,
        1,1,1,1,1,1,1,2,1,1,1,1,2,1,1,2,1,1,2,1,2,2,2,2,
        1,2,1,1,1,2,1,1,2,1,1,2,2,2,2,2,2,1,1,1,2,1,1,1,
        2,1,2,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,2,2,1,1,1,1,
        1,1,1,1,2,2,1,1,2,2,1,1,2,1,1,2,1,1,1,2,2,1,1,1,
        1,1,2,2,2,1,1,1,1,2,1,2,1,1,1,1,1,2,1,1,2,2,1,1,
        1,1,1,1,2,2,1,1,2,1,1,2,1,2,1,1,1,39,12,78,26,25,
        15,100,15,50,38,60,25,15,17,20,22,26,20,12,0,40,70,66,
        20,58,26,21,40,40,48,70,40,110,35,60,15,20,35,36,48,40,
        12,9,65,12,18,25,55,20,100,25,25,25,30,18,18,20,30,50,
        54,120,50,25,60,20,20,43,20,30,8,30,20,23,100,50,20,60,
        30,35,20,63,25,25,20,20,27,100,20,20,50,15,19,18,120,
        22,35,52,21,80,25,10,45,21.390000000000001,24,30,30,23,30,
        25,50,18,17,19,26,50,60,40,40,40,48,20,20,35,12,35,20,
        15,21,25,78,80,15,30,50,65,50,0,30,0,30,25,7,22,95,
        120,20,20,30,23,20,32,24,40,60,24,20,64,40,15,40,30,60,
        68,30,60,21,30,29,34,60,45,15,14,35,14,35,22,15,28,54,
        25,30,30,25,54,32,94,70,25,20,25,90,20,90,40,60,35,30,
        40,30,25,25,15,50,50,20,18,60,95,25,10,15,30,13,25,30,
        25,20,90,7,20,30,30,45,10,30,15,20,20,5,5,20,8,25,10,
        120,25,40,40,20,30,5,15,25,25,30,20,15,39,3,7,10,17,
        15,20,50,50,45,45,20,10,25,30,30,56,30,20,8,40,20,90,
        20,10,25,15,35,45,5,10,10,5,30,40,25,22,100,35,20,20,
        30,50,15,30,5,20,90,10,35,10,50,10,10,60,20,45,5,35,
        10,55,10,60,30,30,20,15,20,3,15,40,20,45,20,35,40,10,
        45,75,20,20,50,90,20,40,25,30,25,50,25,40,35,20,15,60,
        34,15,5,30,15,95,50,60,95,60,20,20,30,60,90,100,90,40,
        45,10,18,10,20,40,26,4,45,30,6,50,10,90,45,40,45,10,
        10,120,30,45,20,30,20,18.5,25,2,20,100,40,86,54,80,3,
        300,12,50,80,40,20,30,40,40,50,30,30,20,180,25,190,30,
        32,50,300,160,40,80,50,350,20,25,10,30,50,40,150,40,50,
        15,3,30,70,5,20,50,100,20,10,120,35,15,233,450,220,20,
        30,35,15,20,200,250,10,90,15,160,40,30,500,15,15,91,300,
        50,150,25,50,50,30,30,130,160,0,6,15,40,40,20,120,50,
        100,68,100,20,100,25,50,40,30,60,100,152,40,25,150,40,
        20,0,40,30,25,0,35,0,40,0,150,50,200,50,120,80,300,10,
        20,200,10,30,70,60,15,20,150,90,40,40,0,50,10,60,40,
        180,100,63,0,50,30,20,35,30,50,10,100,30,100,55,25,4,
        40,30,150,20,20,25,50,280,8,20,100,100,30,0,60,81,50,
        20,20,20,10,100,30,10,12,30,60,30,20,20,0,1,1,100,100,
        60,80,180,200,300,0,30,150,80,300,150,20,10,60,30,40,30,
        150,150,400,0,200,0,800,20,100,100,50,5,400,200,40,150,
        30,30,0,100,30,80,25,100,30,12,80,10,30,100,21,100,100,
        30,500,40,50,63,70,30,70,50,40,45,15,350,220,50,300,25,
        120,100,60,60,40,40,0,300,50,500,200,100,25,20,200,300,
        50,30,0,40,50,180,25,200,20,20,120,3000,20,400,50,50,30,
        50,100,152,130,328,100,50,30,120,20,40,50,30,20,40,0,
        100,80,50,20,100,20,200,30,150,10,100,50,100,20,10,1500,
        40,100,50,250,60,10,0,0,70,80,60,120,150,300,0,300,20,
        100,20,60,100,30,60,80,75,600,200,20,300,200,50,30,100,
        60,20,50,50,70,50,400,120,100,200,2,50,50,200,50,30,50,
        100,50,6,25,20,100,15,5,30,0,100,50,100,80,1,2,1,1,2,
        1,2,1,1,2,1,1,1,1,2,1,2,1,2,2,2,1,2,1,1,1,2,2,2,
        2,1,1,2,2,2,1,1,1,1,1,2,2,2,1,2,1,2,1,2,2,2,2,1,
        1,2,1,2,1,2,1,1,1,1,2,1,2,2,2,2,2,2,1,1,1,1,2,1,
        1,1,1,1,1,1,2,1,1,1,2,2,1,2,1,1,1,2,1,2,2,2,2,1,
        1,2,2,2,1,2,2,2,1,2,1,2,1,2,1,1,2,1,1,1,1,1,1,2,
        2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,2,2,1,1,1,2,1,1,2,
        1,1,1,2,2,2,1,1,2,2,1,2,1,1,2,2,2,2,2,1,1,1,2,1,
        1,1,1,2,1,2,2,2,2,1,1,1,1,1,1,2,1,1,2,1,1,1,5,5,
        2,1,0,5,5,5,2,2,2,10,10,5,1,5,1,2,5,2,5,5,6,5,5,
        5,5,5,5,5,2,5,5,5,2,5,5,2,2,1,5,2,10,2,2,2,2,5,2,
        5,5,2,1,5,2,5,11,5,5,2,5,11,5,2,10,2,11,9,5,5,5,5,
        2,5,11,2,11,2,2,9,5,2,2,2,5,11,4,2,2,9,11,5,7,2,5,
        5,4,4,5,5,3,2,5,5,5,3,2,9,9,1,2,2,5,5,5,2,2,5,5,
        5,5,5,2,4,10,1,5,2,3,5,0,9,3,5,5,10,5,7,2,5,1,5,
        2,10,5,5,5,2,2,5,4,5,5,2,10,10,6,2,5,1,11,1,2,9,2,
        1,6,4,7,6,1,5,5,5,5,5,5,5,4,2,8,1,2,2,2,2,10,5,9,
        2,1,5,5,1,5,1,1,1,1,1,1,2,1,1,1,1,1,1,2,3,2,1,1,
        1,2,1,1,4,1,1,1,1,1,2,1,1,2,2,2,1,1,1,1,2,1,1,1,
        1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,2,1,
        1,2,2,1,1,1,1,2,1,1,2,1,1,1,1,2,1,1,1,2,1,1,1,2,
        1,1,1,2,1,1,1,1,2,1,1,1,1,1,2,2,1,1,1,1,1,1,1,2,
        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,
        1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,
        1,2,1,1,2,2,1,1,1,1,1,1,1,2,1,1,1,1,2,1,2,1,1,1,
        1,1,1,1,1,1,1,1,2,1.8,2.7000000000000002,2,
        3.4000000000000004,0,3,3.2000000000000002,3,2,1,
        3.3000000000000003,2.8000000000000003,2,3,2,3,1.7000000000000002,
        3,2,3.1000000000000001,1,3,1.6000000000000001,3.1000000000000001,
        2.8000000000000003,3.9000000000000004,3,2.6000000000000001,1.5,
        2.6000000000000001,3,3,3,2.3000000000000003,2.7000000000000002,
        3.2000000000000002,3,3,3.3000000000000003,2.7000000000000002,
        2.7000000000000002,2.3000000000000003,2.2000000000000002,
        3.3000000000000003,2.4000000000000004,2.7000000000000002,3,3,3,2,
        2,2,2.1000000000000001,2.9000000000000004,2.6000000000000001,
        2.6000000000000001,2,1.9000000000000001,2.6000000000000001,
        2.8000000000000003,2,1,2,2.8000000000000003,3,3,1.8,3,3,2,2,
        2.5,3,1.4000000000000001,1.6000000000000001,3,2.8000000000000003,
        2.9000000000000004,2.3000000000000003,2.9000000000000004,2,2,3.5,
        2.7999999999999998,3.2000000000000002,2,3,2.2999999999999998,
        2.8999999999999999,1.7,3.5,3,2.7000000000000002,3,
        3.3999999999999999,1,1,1,3,3.3999999999999999,3,2,
        3.2999999999999998,2.6000000000000001,2.8999999999999999,
        2.7000000000000002,2.8999999999999999,3,2,3,3,3,
        2.7999999999999998,1.8999999999999999,3.2000000000000002,3,
        2.7999999999999998,2.8999999999999999,3,3,3,2.7000000000000002,3,
        2,3,2.8999999999999999,2.1000000000000001,3,3.2000000000000002,2,
        3,2,1.8999999999999999,3.3999999999999999,3,3,2.7000000000000002,
        0,3.7000000000000002,2.8999999999999999,2.6000000000000001,2,
        3.2000000000000002,3,2.7999999999999998,3.1000000000000001,2,3,3,
        1.8999999999999999,2,2.1000000000000001,2.7999999999999998,3,
        2.1000000000000001,2.3999999999999999,3,2.1000000000000001,1.3,3,
        1.8,1.3999999999999999,2,2.5,1,2.8999999999999999,1.8,
        3.2999999999999998,2.2999999999999998,2,1,2.8999999999999999,
        2.7999999999999998,3,3.2000000000000002,2,2,2.5,2.5,
        2.8999999999999999,2,1.8,2,3.1000000000000001,3.3999999999999999,
        3.1000000000000001,3,2,3,3.5,2,2.6000000000000001,2,0,
        3.3999999999999999,3,3,4,5,3,3,3,2,1,2,3,2,2,4,3,3,2,
        4,2,2,1,4,2,2,2,2,3,3,1,3,2,2,3,3,2,3,3,3,5,3,4,
        9,2,3,2,4,6,3,4,3,2,1,1,3,3,3,2,2,12,2,1,2,2,5,3,
        4,2,1,3,3,3,3,3,1,1,3,4,2,2,11,4,2,3,3,3,2,4,1,2,
        2,3,3,4,3,3,1,2,3,0,3,4,4,4,1,3,4,4,3,3,2,4,2,2,
        1.7,4,4,3,4,3,3,3,2,5,2,3,2,1,3,4,3,4,1,2,1,2,2,
        2,0,4,2,3,2,3,3,2,3,2,3,4,1,4,1.7,2,4,3,3,2,2,1,
        2,1.7,1,3,3.1000000000000001,1,3,1,2,2,2,1,3,2,4,4,3,1,
        4,1.7,3,3,2,2,2,4,4,2,2,4,4,2,2,3,0,3,3,4,1,4,4,
        3,4,4,4,4,4,4,4,4,3,4,4,4,2,3,4,4,3,4,4,4,3,3,3,
        3,4,4,5,4,4,2,4,4,4,3,5,3,4,4,3,3,1,4,3,4,3,4,4,
        4,1,4,1,4,4,4,0,4,4,4,4,4,3,3,3,3,3,4,4,4,4,3,4,
        4,5,1,4,4,4,3,3,1,4,3,3,4,5,3,3,4,2,4,3,3,3,3,4,
        4,3,4,3,1,1,4,3,4,1,4,1,4,3,5,3,4,4,1,4,4,1,4,3,
        3,4,3,3,4,4,5,4,4,3,3,3,3,3,3,3,3,1,3,3,3,4,4,3,
        4,2,4,3,5,3,3,5,4,4,4,3,5,3,5,5,3,3,3,4,5,4,1,4,
        4,4,4,3,4,4,5,5,4,4,4,4,5,4,4,4,4,4,4,4,1,4,1,1,
        1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1,
        1,2,1,1,1,1,1,1,1,2,2,1,2,1,2,2,1,1,1,2,2,1,2,1,
        1,2,2,1,2,1,2,2,1,2,1,1,1,1,1,1,1,1,1,2,1,1,2,1,
        1,1,1,1,1,1,1,2,1,2,2,1,1,1,2,2,2,2,2,1,2,1,2,2,
        1,1,1,2,2,1,1,2,2,1,1,2,2,1,2,2,2,1,1,2,1,1,1,1,
        2,1,2,1,1,2,2,1,1,1,2,1,1,1,1,1,2,1,1,1,1,1,1,1,
        2,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,2,1,2,1,1,2,1,
        1,2,2,1,1,2,1,1,2,1,1,1,1,2,1,2,1,1,2,2,1,1,1,1,
        1,650,350,800,390,1000,1000,500,400,400,1000,500,900,1000,
        560,900,1000,800,400,300,700,500,0,2000,300,700,1200,400,
        700,500,700,2000,1000,500,400,500,1100,1000,900,1500,1000,
        800,700,400,1000,800,400,1000,1000,500,100,200,1100,1100,
        600,600,1000,100,1000,850,800,1500,1200,500,300,1000,1000,
        1700,100,500,100,500,500,1200,1000,2000,1000,2000,700,1500,
        800,800,300,300,1000,1000,600,700,860,400,400,1000,1500,
        500,2000,1000,600,1000,1000,1200,1000,1000,25,1000,1100,400,
        800,1000,500,1000,1500,1000,400,1000,250,2000,1500,1000,300,
        600,850,500,300,900,1000,1300,900,500,900,1000,600,600,
        1000,700,1000,1000,400,400,1200,1000,500,700,300,800,500,
        100,900,1500,800,900,1500,650,650,500,600,300,200,0,200,
        300,1000,1000,400,700,500,500,1000,1500,1100,1400,1400,500,
        800,500,1000,800,800,1000,800,800,1500,700,250,200,1600,
        1000,500,200,500,2000,1000,600,1500,600,1300,500,32,38,32,
        30,30,20,25,20,40,30,50,30,30,20,30,35,30,30,40,20,30,
        50,25,30,30,25,30,20,40,17,35,28,30,30,0,33,35,35,35,
        35,30,37,37,28,35,40,45,35,12,12,40,35,40,25,30,35,25,
        22,30,35,20,40,35,30,30,40,40,30,28,30,15,28,25,20,30,
        35,30,20,25,25,25,25,25,40,35,55,35,10,40,45,26,40,30,
        30,20,40,39,39,0,25,25,50,40,5,20,50,40,35,12,40,50,
        35,30,30,30,40,30,20,25,40,25,30,15,35,20,50,30,30,40,
        30,56,50,30,25,40,25,35,25,0,35,50,0,40,30,30,40,0,25,
        50,30,30,35,30,50,25,40,15,30,25,35,40,50,0,22,50,40,
        50,25,40,30,40,32,30,50,30,40,30,30,28,25,30,25,25,30,
        40,30,45,0,30,0,42,40,37,8,35,0,3,8,3,20,20,2,7,0,
        20,8,15,0,0,0,10,10,12,8,6,6,14,20,3,10,0,6,10,8,10,
        2,15,8,7,0,0,5,8,15,8,8,0,5,10,0,0,11,15,4,7,10,0,
        0,5,0,0,30,6,0,10,15,4,0,0,3.5,10,0,0,0,10,7,12,0,
        15,30,12.5,30,4,25,10,25,0,0,10,15,8,10,6,20,20,10,20,
        20,0,0,10,9,8,0,5,16,0,12,8,0,10,0,2,16,0,10,0,10,
        8,30,0,0,20,12,12,10,18,0,8,4,0,12,8,0,0,1,4,0,3,
        16,3,0,0,0,14,0,0,6,0,0,3,0,0,0,10,10,0,8,4,2,0,0,
        11,0,10,0,3,0,0,0,10,0,10,0,21,15,8,0,0,25,10,10,
        3.5,4,20,10,4,6,15,16,0,20,20,0,0,10,12,0,10,4,4,2,
        6,12,0,16,5,10,6,5,10,10,7,10,4,2,10,10,6,3,1,0,10,
        15,5,10,20,14,5,20,10,8,20,3,0,10,0,4,5,5,5,4,3,15,
        5,5,12,14,4,4,6,10,5,4,10,15,6,3,3,8,10,8,10,1,0,5,
        0,10,30,0,10,20,20,6,5,3,3,15,15,5,3,1,15,5,10,2,3,
        2,10,20,2,3,2,10,0,14,8,8,5,7.5,10,50,32,28,10,4,10,
        2,7,6,7,10,10,8,30,10,20,8,15,10,14,2,12,10,12,5,6,
        2,15,10,1,6,10,10,16,7,7,0,0,5,5,20,10,10,10,12,1.5,
        2,10,10,5,10,7,10,10,9,10,1,10,2,3,10,5,5,10,0,0,40,
        4,3,5,10,8,20,0,5,10,10,10,15,5,3,4,20,20,6,2,20,20,
        10,7,10,4,10,10,3599,60,60,2000,4000,4000,4000,4000,60,0,
        5000,0,3500,0,0,3000,3000,3000,2,3,3000,0,6,4,2500,2500,
        3,60,0,0,4,3000,2000,70,0,4.5,4,3,300,4,25,60,40,60,0,
        20,8000,36,36,0,1500,30,100,60,55,25,1500,2500,80,3800,4,
        38,80,20,3500,4,4300,2500,60,0,0,4000,8000,8,70,0,70,
        1000,60,5,3000,50,50000,4000,0,70,40,5000,20,60000,30,60,
        3,30,5000,4,70,75,5000,4,2500,80,60000,60,0,2.5,4,60,0,
        2000,4,4,5,30,10000,6000,5000,0,50,60000,50,0,0,80,5000,
        50,5000,5000,60,70,12,4000,4,5,5,4,5000,0,0,4000,4000,5,
        1.5,3000,3500,5000,70,1,4,5000,60,6100,3000,3000,4,4000,0,
        0,5000,3000,5000,70000,3000,5000,4000,50000,127000,72000,
        4500,70,60,60,80,3500,0,75,72,70000,65,3500,20,3000,3000,
        3.5,4000,0,60000,60000,30,25,70,800,4,2000,3500,10,10,10,
        11,14,14,10,10,13,12,13,10,10,10,10,10,9,10,10,10,11,
        0,8,9,11,10,10,10,9,12,9,8,10,8,8,10,10,10,10,11,9,
        11,9,11,9,9,10,12,10,10,10,9,8,9,10,12,10,10,11,11,
        10,9,10,8,8,10,9,12,12,9,5,10,9,9,9,12,10,10,10,12,
        8,8,10,13,11,10,10,10,10,8,10,10,12,12,12,8,8,8,10,
        10,9,8,10,10,12,10,10,9,9,10,10,10,10,10,10,10,10,12,
        12,10,11,10,10,10,8,8,10,9,10,10,8,10,10,10,12,11,10,
        8,13,9,11,9,9,10,15,10,8,10,10,10,9,10,10,8,12,11,0,
        10,9,11,9,12,10,10,10,10,16,10,9,12,9,11,9,20,9,9,9,
        8,9,11,12,10,9,8,14,10,9,10,12,12,10,8,8,4,9,620,45,
        45,0,0,99,45,720,720,0,0,0,175,0,0,500,480,480,480,700,
        60,0,600,480,35,600,600,720,600,50,12,600,50,600,0,480,
        480,0,500,500,40,20,500,600,0,600,738,607,500,605,660,
        615,600,612,600,625,600,660,500,4085,622,650,600,430,24,
        500,64,660,600,480,60,600,0,700,1200,0,720,20,550,500,
        500,56,52,744,550,200,400,55,0,660,63,600,500,600,600,
        540,660,660,0,0,150,650,720,720,999,550,650,600,0,90,50,
        630,60,600,0,600,50,48,480,630,500,636,630,48,50,0,50,
        45,600,480,100,600,600,480,550,480,650,0,0,0,50,44,720,
        500,600,800,0,50,500,600,540,50,600,600,36,10,45,0,600,
        300,60,60,0,1,1,540,700,610,620,666,60,45,674,648,0,600,
        600,480,587,650,3679,580,540,600,0,600,0,0,360,0,0,600,
        480,0,720,9,3,7,5,0,5,1,4,1,3,6,0,5,9,9,5,5,1,3,7,
        9,9,3,5,5,5,2,7,3,0,5,5,1,6,9,9,7,2,5,9,7,9,1,7,
        1,3,1,5,8,9,1,1,2,1,1,1,1,9,3,7,6,6,9,2,3,1,4,7,
        2,3,7,5,8,8,4,1,3,9,7,1,1,7,1,7,7,6,1,2,3,2,3,1,
        8,7,5,3,2,1,5,1,3,2,9,9,5,1,1,3,0,1,5,5,9,5,0,1,
        7,5,1,9,1,9,2,7,7,8,5,3,1,1,6,9,1,7,3,9,5,0,9,9,
        9,5,1,1,1,5,9,1,5,7,9,2,5,3,9,1,6,5,5,3,2,7,1,8,
        1,1,0,2,2,3,1,7,1,8,9,5,3,3,9,5,9,5,5,5,9,5,5,2,
        5,7,1,5,1,0,3),.Dim = c(195,34),.Dimnames = list(character(0),
        c("1:Geschlecht","2:Groesse","3:Gewicht","4:Alter","5:Haarfarbe",
        "6:Haarlaenge","7:Schuhgroesse","8:Brueder","9:Schwestern",
        "10:Glueckszahl","11:Rauchen","12:Urlaubs-km","13:Feten-Stunden",
        "14:Eltern-Wohnung","15:PC-Zugriff","16:Wohnflaeche",
        "17:Weg-Minuten","18:CDs","19:Buecher","20:Auto","21:Zeitung",
        "22:Studiengang","23:Abi-Note","24:Mathe-Note","25:Verkehrsmittel",
        "26:Wunschort","27:Ausgaben","28:Studierzeit","29:Verdienzeit",
        "30:TV-Zeit","31:Anfangsgehalt","32:Studiendauer","33:Dekansalter",
        "34:Partei")))

#:8

#9:
"frabo04" <-
structure(c(1, 1, 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2,
2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 1, 2,
1, 2, 1, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2,
2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2,
2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1,
2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2,
2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 2,
2, 2, 1, 1, 1, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1,
1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2,
1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1,
2, 2, 2, 1, 1, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1,
1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2,
2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1,
1, 2, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 160, 167, 184, 173,
190, 170, 170, 180, 166, 173, 160, 185, 160, 178, 186, 166, 184,
180, 173, 190, 170, 156, 160, 169, 158, 163, 170, 162, 188, 171,
160, 160, 161, 165, 175, 170, 166, 171, 170, 168, 191, 162, 175,
174, 170, 185, 182, 183, 184, 160, 183, 182, 185, 192, 172, 183,
180, 155, 174, 174, 176, 170, 189, 156, 182, 180, 186, 190, 168,
155, 168, 182, 180, 187, 166, 173, 180, 193, 166, 180, 183, 178,
156, 166, 172, 172, 170, 183, 185, 179, 179, 180, 179, 175, 165,
180, 187, 178, 190, 180, 173, 175, 185, 196, 194, 189, 165, 186,
190, 168, 170, 176, 179, 182, 184, 183, 185, 185, 178, 195, 179,
177, 179, 175, 162, 170, 178, 179, 178, 160, 160, 172, 187, 178, 
189, 186, 188, 182, 172, 180, 176, 176, 193, 184, 168, 173, 174, 
184, 176, 168, 169, 168, 186, 175, 176, 181, 175, 172, 170, 192, 
170, 179, 172, 173, 185, 188, 174, 181, 187, 185, 188, 179, 165, 
176, 195, 194, 183, 178, 161, 184, 194, 180, 175, 180, 170, 183, 
180, 168, 161, 160, 182, 182, 181, 165, 189, 167, 185, 190, 190, 
158, 165, 176, 184, 174, 163, 160, 165, 168, 170, 190, 176, 178, 
185, 188, 159, 176, 180, 186, 187, 178, 189, 170, 175, 190, 183, 
172, 187, 175, 182, 187, 185, 197, 174, 170, 163, 182, 189, 180, 
177, 181, 173, 167, 159, 160, 187, 185, 182, 160, 189, 185, 175, 
171, 176, 200, 187, 183, 172, 180, 172, 181, 175, 170, 175, 171, 
189, 199, 186, NA, 175, 170, 180, 187, 200, 178, 195, 188, 190, 
168, 171, 173, 171, 188, 186, 194, 172, 187, 165, 172, 173, 175,
187, 189, 182, 173, 166, 172, 174, 170, 200, 172, 180, 178, 172, 
166, 173, 179, 172, 158, 147, 175, 167, 165, 178, 172, 153, 192, 
165, 174, 182, 176, 184, 200, 189, 177, 192, 44, 74, 75, 75, 
95, 76, 64, 80, 57, 74, 60, 90, 65, 75, 80, 60, 73, 72, 52, 90, 
75, 51, 46, 63, 52, 56, 60, 55, 65, 55, 54, 60, 50, 53, 57, NA, 
54, 50, 64, 50, 104, 53, 60, 60, 47, 75, 65, 70, 83, 56, 83, 
69, 85, 92, 54, 70, 80, 44, 68, 65, 70, 60, 79, 47, 86, 72, 96, 
85, NA, NA, 68, 78, 74.5, 80, 53, 58, 173, 74, 62, 87, 74, 95, 
51, 50, 52, 56, 58, 75, 83, 64, 66, 75, 67, 65, 57, 90, 81, 65, 
82, 71, 73, 83, 91, 100, 89, 77, 56, 75, 83, 66, 60, 78, 79, 
75, 81, 81, 80, 115, 83, 105, 75, 65, 76, 66, 110, 56, 70, NA, 
76, 53, 55, 72, 87, 67, 78, 76, 77, 78, 75, 81, 68, 73, 90, 77, 
55, 65, 82, 73, 70, 54, 70, 65, 92, 65, 70, 76, 64, 64, 60, 100, 
75, 75, NA, 72, 80, 105, 57, 75, 85, 86, 77, 70, 52, 62, 79, 
79, 85, 85, 47, 81, 91, 74, 65, 65, 62, 72, 34, 56, 50, 51, 70, 
73, 70, 50, 86, 65, 85, 75, 80, 58, 70, 63, 67, 60, 60, 47, 55, 
64, 65, 88, 74, 71, 95, 90, 52, 58, 69, 71, 81, 84, 85, 62, 68, 
80, 90, 63, 80, 77, 90, 70, 80, 88, 63, 75, 70, 70, 81, 90, 67, 
78, 62, 51, 75, 50, 75, 72, 76, 52, 85, 75, 80, 66, 60, 80, 80, 
82, 61, 70, 60, 72, 80, 49, 75, 80, 82, 95, 82, 67, 60, 65, 80, 
89, 73, 65, 95, 79, 85, 57, 68, 55, 58, 96, 75, 95, 63, NA, 56, 
55, 65, 71, 82, 65, 72, 67, 62, 68, 62, 70, 96, 58, 60, NA, 56, 
58, 63, 64, 59, 50, 42, 62, 90, 53, 73, 62, 47, 64, 73, 68, 95, 
58, 68, 99, 83, 71, 80, 19, 24, 22, 25, 20, 21, 20, 22, 20, 24,
26, 21, 19, 21, 19, 24, 22, 19, 20, 21, 22, 23, 21, 27, 24, 21, 
26, 24, 20, 20, 21, 22, 24, 24, 21, 22, 20, 19, 20, 20, 19, 33, 
20, 27, 20, 21, 24, 24, 23, 24, 25, 24, 21, 21, 26, 19, 20, 27, 
25, 19, 20, 19, 20, 20, 23, 24, 22, 16, 20, 20, 20, 20, 22, 24, 
20, 20, 21, 19, 19, 22, 21, 28, 22, 23, 22, 19, 20, 22, 25, 20, 
21, 20, 19, 20, 20, 21, 20, 20, 24, 20, 26, 21, 23, 20, 20, 21, 
20, 20, 21, 23, 21, 25, 22, 19, 22, 24, 20, 27, 20, 25, 22, 20, 
20, 21, 22, 24, 23, 20, 23, 20, 21, 20, 22, 22, 20, 23, 22, 22, 
26, 23, 20, 20, 25, 21, 21, 22, 25, 22, 22, 19, 20, 21, 41, 24, 
25, 20, 22, 24, 19, 22, 19, 21, 21, NA, 21, 24, 19, 24, 22, 20, 
20, 21, 19, 19, 21, 23, 21, 21, 27, 21, 20, 20, 19, 20, 20, 20, 
22, 21, 19, 19, 22, 20, 20, 21, 23, 19, 22, 21, 19, 19, 19, 20, 
20, 21, 20, 23, 25, 22, NA, 22, 25, 25, 20, 20, 20, 20, 19, 24,
21, 21, 25, 22, 21, 20, 24, 21, 21, 28, 19, 20, 20, 24, 24, 21, 
20, 20, 20, 24, 21, 20, 27, 20, 24, 21, 21, 20, 22, 24, 22, 24, 
23, 20, 22, 20, 21, 21, 21, 21, 22, 23, 23, 21, 19, 25, 20, 24, 
24, 21, 19, 19, 19, 21, 23, 20, 20, 21, 22, 20, 20, 20, 19, 22, 
22, 19, 22, 20, 21, 22, 20, 19, 19, 19, 19, 20, 22, 23, 19, 19, 
21, 24, 20, 23, 20, 23, 29, 20, 19, 23, 26, 23, 22, 21, 25, 23, 
26, 20, 23, 20, 21, 21, 21, 21, 20, 21, 20, 2, 3, 2, 1, 2, 1, 
3, 2, 3, 1, 2, 3, 3, 2, 2, 3, 2, 2, 3, 5, 5, 2, 1, 2, 1, 2, 3, 
1, 1, 3, 1, 1, 1, 1, 2, 2, 3, 2, 3, 2, 2, 2, 5, 1, 5, 2, 2, 1, 
2, 1, 2, 3, 2, 2, 1, 2, 3, 1, 1, 2, 1, 3, 1, 1, 2, 2, 3, 2, 3, 
5, 4, 2, 2, 2, 3, 2, 2, 3, 3, 3, 3, 2, 1, 1, 3, 2, 2, 3, 2, 2, 
3, 3, 2, 2, 2, 2, 3, 3, 2, 2, 1, 1, 2, 3, 2, 2, 2, 2, 3, 1, 2, 
1, 5, 2, 3, 3, 2, 2, 1, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 3, 2, 
1, 2, 4, 5, 3, 2, 3, 2, 2, 1, 3, 2, 2, 3, 4, 1, 2, 3, 3, 3, 3, 
1, 2, 1, 3, NA, 3, 2, 1, 5, 4, 2, 3, 2, 2, 2, 3, 2, 2, 3, 2, 
2, 5, 2, 2, 2, 3, 1, 2, 1, 3, 3, 1, 2, 1, 3, 2, 2, 3, 5, 2, 2, 
2, 2, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 2, 2, 3, 2, 2, 1, 3, 2, 2, 
2, 1, 2, 1, 3, 3, 3, 2, 2, 1, 2, 2, 5, 5, 3, 2, 1, 1, 2, 1, 5, 
3, 3, 2, 3, 2, 2, 3, 3, 3, NA, 2, 1, 1, 2, 3, 3, 3, 2, 2, 3, 
3, 4, 3, 2, 3, 2, 2, 2, 2, 2, 2, 5, 3, 2, 1, 3, 3, 3, 2, 2, 2, 
2, 3, 3, 3, 1, 3, 3, 2, 2, 2, 3, 2, 1, 3, 3, 3, 1, 3, 2, 4, 2, 
2, 3, 2, 3, 3, 3, 3, 2, 2, 1, 1, 1, 2, 1, 3, 1, 3, 3, 1, 3, 2, 
2, 2, 3, 2, 3, 2, 30, 30, 1, 5, 5, 5, 35, 5, 50, 5, 10, 7, 45, 
2, 3, 25, 8, 4, 30, 5, 1, 20, 50, 20, 15, 15, 30, 50, 10, 40,
NA, 50, 51, 35, 50, 50, 60, 40, 50, 60, NA, 25, 20, 15, 25, 5, 
5, 10, 5, 36, 8, 30, 6, 20, NA, 12, 3, 30, 3, 30, 5, 30, 4, NA, 
2, 2, 1.5, 5, 25, 30, 25, 3, 7, 5, 35, 25, 10, 6, 40, 0.6, 7, 
0.5, 10, 30, 35, 30, 45, 2, 3, 25, 5, 8, 3, 5, 40, 20, 20, 35, 
2, 8.4, 7, 3, 5, 0.5, 7, 6, 50, 15, 12, 30, 20, 5, 3.5, 4, 4.5, 
8, 3, 5, 15, 6, 8, 45, 5, 5, 30, 30, 5, 3, 2, 40, 50, 25, 0.1, 
6, 1.5, 3, 5, 5, 1, 5, 4, 3, 0.4, 7, 25, 30, 3, 5, 1, 50, 40, 
20, 5, 7, 30, 3, 4, NA, 40, 5, 5, 4, 5, 4, 4, 3, 30, 7, 13, 7, 
10, 3, 25, 6, 5, 1, 3, 5, 40, 7, 4, 30, 3, 5, 10, 6, 5, 20, 30, 
60, 14, 3, 4, 35, 10, 40, 3, 4, 4, NA, 40, 25, 10, 40, 20, 40, 
NA, 60, 4, 1, 2, 6, 1, 7, 40, 40, 5, 7, 30, 15, 4, 3, 5, 1.5, 
5, 47, 4, 25, 5, 4, 2, 4, 4, 7, NA, 5, 5, 5, 6, 3, 0.3, 15, 16, 
15, 5, 5, 25, 15, 9, 10, 5, 30, 40, 5, 5, 3, 50, 5, 35, 35, 50,
30, 45, 4, 4, 2, 3, 20, 50, 50, 5, 4, 8, 15, 7, 9, 8, 25, 31, 
28, 26, 0.3, 3, 0.8, 5, 15, 30, 40, 5, 15, 2, 5, 8, 50, 40, 25, 
30, 25, 2.5, 40, 40, 30, 40, 60, 40, 3, 30, 75, NA, 5, 45, 70, 
4, 25, 53, 3, NA, 5, 5, 5, 3, 0.4, 4.5, 5, 6, 38, 38, 44, 41, 
45, 41, 40, 43, 40, 41, 38, 46, 38, 43, 47, 39, 44, 42, 40, 46, 
42, 38, 37, 40, 38, 37, 38, 37, 44, 41, 40, 37, 36, 38, 38, 40, 
38, 39, 39, 37, 47, 37, 39, 41, 39, 44, 41, 42, 44, 38, 44, 41, 
46, 46, 41, 43, 43, 35, 43, 43, 42, 39, 47, 37, 43, 42, 46, 49, 
39, 36, 40, 44, 42, 44, 39, 39, 42, 48, 40, 43, 44, 43, 35, 37, 
38, 39, 40, 43, 43, 41, 43, 45, 43, 42, 40, 44, 45, 40, 43, 43, 
42, 41, 43, 45, 43, 45, 39, 45, 45, 39, 38, 44, 43, 44, 43, 44, 
44, 45, 43, 45, 44, 40, 42, 42, 38, 41, 43, 43, 42, 38, 38, 39, 
46, 43, 45, 43, 47, 44, 41, 45, 42, 43, 46, 44, 38, 40, 43, 44, 
42, 39, 39, 40, 43, 40, 42, 44, 42, NA, 39, 46, 43, 42, 44, 43, 
46, 46, 38, 45, 46, 46, 45, 43, 40, 41, 44, 46, 44, 45, 37, 44, 
48, 44, 42, 43, 43, 44, 42, 38, 37, 37, 42, 43, 44, 37, 44, 41, 
45, 44, 42, 38, 37, 41, 42, 39, 39, 38, 38, 41, 43, 46, 42, 43, 
46, 44, 37, 39, 42, 45, 44, 45, 46, 42, 43, 45, 43, 38, 45, 40, 
44, 43, 42, 46, 43, 43, 39, 42, 44, 43, 45, 45, 42, 39, 37, 39, 
44, 46, 45, 37, 46, 45, 43, 42, 39, 48, 44, 45, 39, 43, 39, 40, 
38, 38, 40, 44, 46, 48, 41, 40, 41, 40, 42, 46, 48, 43, 45, 45, 
46, 39, 39, 39, 38, 40, 43, 46, 42, 45, 38, 39, 41, 42, 44, 45, 
46, 41, 38, 40, 40, 41, 47, 41, 39, 40, 38, 39, 40, 43, 41, 37, 
35, 41, 41, 38, 44, 38, 37, 46, 40, 42, 43, 41, 44, 47, 45, 44,
46, 0, 2, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 
1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 2, NA, 0, 0, 1, 1, 1, 1, 0, 
0, 0, 6, 1, 3, 0, 0, 1, 2, 0, 1, 0, 0, 1, 1, 0, 1, 2, 0, 0, 2, 
0, 0, 0, 0, 0, 1, 1, 0, 1, 2, 1, 0, 0, 1, 1, 2, 0, 0, 1, 1, 1, 
2, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 2, 1, 1, 1, 1, 0, 1, 0, 2, 0, 
1, 2, 0, 1, 2, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 
NA, 1, 1, 0, 1, 0, 1, 0, 2, 0, 1, 0, 1, 2, 1, 1, 1, 1, 6, 0, 
0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 
0, 2, 2, 0, 2, 1, 1, 0, 0, 2, 0, 0, 0, 2, 1, 1, 0, 1, 1, 0, 1, 
0, 1, 1, 1, 0, 0, 0, 1, NA, 0, 0, 0, 1, 2, NA, 1, 1, 1, 1, 0, 
0, 1, 1, 1, 1, 1, 0, 0, 2, 1, 1, 4, 2, 0, 2, 1, 1, 0, 0, 2, 0, 
0, 1, 1, NA, 0, 0, 1, NA, 0, 2, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 
1, 1, 1, NA, 0, 1, 0, 0, 0, NA, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0,
1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 2, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 
1, 1, 2, 0, 1, 2, 1, 2, 1, 1, 0, 1, 1, 1, 2, 2, 1, 0, 0, 0, 0, 
2, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 1, 0, 0, 2, 1, 0, 1, 2, 
0, 0, 1, 1, 1, 0, 2, 0, 3, 2, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 
1, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 1, 
0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 2, 
1, 1, 0, 0, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 
0, 0, 1, 1, 1, 0, 0, 0, 0, 2, 0, 1, 0, 2, 0, 0, 1, 1, 1, 0, 1, 
1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 
1, 1, 1, 0, 3, 1, 1, 0, 3, 0, 0, 2, 3, 0, 0, 1, 1, 0, 0, 0, 1, 
1, 1, 0, 1, 0, NA, 2, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 
0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 
0, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 1, 3, 1, 0, 0, 0, NA, 1, 2, 
1, 0, NA, 0, 1, NA, 1, 0, 0, NA, 2, 0, 0, 1, 1, 0, 0, 2, 1, 0, 
0, 1, 1, 2, 1, 1, NA, 0, 2, 2, 0, 1, 3, 1, 1, 0, NA, 1, 3, 0, 
2, 1, 1, 1, 1, 0, 0, 1, NA, 0, 0, 0, 1, 2, 0, 1, 1, 0, 0, 0, 
0, 0, 1, 0, 0, 0, 0, 3, 1, 1, 1, 1, 2, 0, 2, 1, 0, NA, 1, 1, 
0, 2, 0, 2, 0, 1, 1, 0, 0, 1, NA, 0, 1, 2, 1, 0, 6, 0, 2, 0, 
1, 0, 2, 1, 2, 0, 1, 1, 1, 1, 0, 2, 0, 164, 169, 168, 160, 175, 
160, 170, 150, 157, 160, 157, 155, 158, 165, 176, 172, 170, 164, 
168, 165, 160, 154, 157, 160, 160, 160, 168, 165, 175, 167, 160, 
162, 160, 162, 165, 160, 169, 166, 158, 163, 164, 157, 176, NA, 
166, 172, 173, 178, 174, 165, 160, 169, 160, 184, 160, 160, 160, 
150, 163, 171, 159, 164, 169, 152, 170, 169, 165, 170, 163, 154,
NA, 170, 159, 172, 160, 172, 175, 175, 160, 172, 170, 169, 162, 
165, 165, 170, 170, 170, 174, 178, 163, 170, 170, 169, 170, 160, 
169, 165, 160, 169, 165, 160, 175, 177, 178, 175, 165, 157, 175, 
165, 160, 164, 155, 165, 168, 165, 170, 173, 165, 171, 162, 163, 
163, 163, 167, 172, 170, 159, 164, 159, 162, 175, 165, 170, 176, 
172, 172, 176, 164, 170, 158, 160, 169, 175, 165, 168, 164, 160, 
165, 162, 168, 168, 165, 155, 165, 159, 162, 153, 168, 162, 160, 
165, 165, 162, 170, 173, 169, 168, 165, 160, 163, 170, 163, 160, 
182, 153, 167, 165, 162, 165, 174, 155, 165, 175, 150, 161, 160, 
160, 165, 163, 164, 167, 170, 173, 168, NA, 175, 175, 174, 163, 
163, 168, 172, 165, 156, 165, 163, 166, 165, 170, 165, 164, 165, 
180, 160, 173, 155, 165, 172, 162, 172, 166, 165, 170, 173, 162, 
170, 160, 160, 174, 165, 176, 156, 160, 158, 167, 172, 170, 164,
160, 171, 168, 163, 164, 170, 165, 178, 168, 165, 168, 163, 160, 
168, 165, 165, 160, 163, 165, 166, 165, 160, 170, 165, 166, 170, 
150, 150, 165, 175, 160, 160, 160, 170, 165, 170, 167, 168, 170, 
168, 162, 174, 155, NA, 175, 168, 172, 150, 164, 165, 158, 175, 
178, 172, 165, 156, 169, 165, 165, 169, 165, 169, 175, 160, 165, 
168, 162, 164, 156, 180, 162, 163, 150, 165, 165, 157, 180, 170, 
156, 165, 150, 160, 188, 160, 160, 174, 172, 175, 170, 190, 170, 
175, 175, 160, 175, 171, 160, 184, 185, 175, 185, 174, 186, 179, 
184, 180, 170, 170, 171, 182, 175, 169, 180, 173, 183, 193, 180, 
172, 170, 178, 173, 180, 189, 175, 174, 175, 170, 167, 180, NA, 
192, 176, 175, 180, 180, 170, 170, 180, 188, 184, 170, 170, 180, 
170, 168, 180, 172, 185, 183, 174, 184, 173, 180, 195, 180, 165, 
185, 190, 175, 185, 185, 185, 170, 195, 185, 185, 184, 181, 182, 
176, 175, 190, 185, 183, 175, 185, 177, 180, 175, 172, 187, 189, 
169, 190, 195, 186, 172, 170, 180, 192, 190, 186, 190, 186, 180, 
180, 182, 173, 170, 175, 164, 191, 180, 173, 164, 193, 180, 190, 
184, 169, 176, 182, 180, 185, 175, 175, 178, 178, 185, 176, 181, 
180, 180, 178, 166, 178, 170, 160, 178, 183, 185, 186, 172, 180, 
187, 185, 175, 175, 175, 172, 183, 175, 177, 180, 188, 188, 170, 
177, 170, 183, 193, 185, 178, 181, 190, 190, 183, 176, 175, 168, 
182, 189, 179, 178, 169, 181, 183, 178, 178, 188, 170, 178, 170, 
184, 170, NA, 181, 182, 170, 165, 172, NA, 175, 180, 178, 175, 
170, 178, 178, 181, 185, 168, 168, 182, 170, 185, 172, 176, 130, 
180, 175, 186, 170, 172, 180, 180, 181, 177, 168, 180, 178, 175,
182, 184, 165, 180, 175, 180, 169, 180, 185, 182, 175, 180, 172, 
174, 168, 180, 175, 170, 182, 184, 180, 172, 187, 185, 197, 195, 
185, 185, 189, 185, 193, 175, 170, 180, 190, 175, 175, 183, 187, 
185, 170, 171, 183, 180, 171, 190, 185, 185, 182, 182, 185, 168, 
178, 182, 184, 182, 180, 190, 175, 186, 175, 185, 163, 178, 180, 
183, 171, 178, 180, 175, 175, 180, 197, 185, 177, 173, 185, 165, 
176, 191, 185, 172, 175, 183, 172, 160, 185, 179, 162, 185, 165, 
173, 175, 177, 186, 185, 190, 176, 178, 3, 20, NA, 8, 6, 11, 
3, 7, 27, 3, 3, 1, 4, 13, 88, 36, 74, 8, 6, 8, 5, 8, 3, 12, 6, 
10, 100, 8, 22, NA, 3, 6, 7, 7, 18, NA, 2, 3, 13, 7, NA, 9, 18, 
9, 7, 5, 13, 3, 4, 8, 12, NA, 18, NA, 7, 26, 7, 13, 7, 11, 17, 
4, 9, 2, 12, NA, 13, 14, 23, 3, 7, 11, NA, 69, 12, 6, 21, 7, 
13, 13, 12, 7, 1, 5, 8, 29, 7, 7, 25, 6, 6, 13, 2, 7, 7, 6, 28,
7, 8, 2, 7, 13, 69, 7, 9, NA, 8, 3, 4, 13, 10, 6, 12, 8, NA, 
NA, 8, 77, 21, 79, 7, 8, 7, 7, 9, 44, 8, 2.375, 6, NA, 8, 7, 
11, 17, NA, 12345, 376, 7, 2, 69, 7, 17, 12, 8, 7, 13, NA, 11, 
13, 3, 2, 4, NA, 6, 19, 13, 13, NA, 8, 23, 12, 2, 4, 7, 5, 6, 
2, 5, 9, 13, 12, 4, 9, 8, 8, 1, 1, 5, 7, 4, 25, 14, 12, 4, 7, 
17, 22, 27, 3, 13, 21, 25, 7, 7, 5, NA, 4, 26, 17, NA, 8, 18, 
5, 7, 10, 13, 3, 3, 666, 32, 11, 7, 10, 5, 2, 10, 7, NA, 4, 21, 
19, 2, 1, 4, 7, 1, 5, NA, 666, 5, 666, 12, 10, 13, 3, 23, 23, 
17, 25, 7, 8, 67, 13, 7, 13, 6, 13, 6, 8, 9, 1, 17, 3, 44, 4, 
17, 16, 7, NA, 8, 13, 8, 7, 7, NA, 7, NA, 9, 16, 13, 6, 8, 17, 
14, 50, 9, 7, 16, 13, 7, 8, NA, 7, 23, 13, 1, 1, 7, 7, 23, NA, 
13, 13, 30, 8, 7, 9, 3, 83, 17, 2, 4, 269, 14, 10, 9, 3, 3, 3, 
16, 12, 11, 4, 7, 3, 273, NA, 1, 7, 7, 11, 14, 23, 7, 9, 1, 2, 
2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 
2, 2, 2, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 
2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 
1, 1, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 
2, 2, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 1, 1, 
1, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 1, 
2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 1, 2, 2, 
2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 
2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 
2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2,
1, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 
2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 
1, 1, 2, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 
2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 60, 14000, 600, 50, 3, 30, 60, 2, 1, 
90, 250, 30, 1200, 1500, 0, 500, 600, 5, 550, 550, 50, 1300, 
1000, 3400, NA, 3400, 0, NA, 650, 20, 10, 80, 600, 200, 2000, 
NA, 16, 120, 960, 500, NA, NA, NA, 0, 500, 190, 1000, 100, 50, 
3000, 30, 2000, 200, NA, 85, 40, 1800, 80, 80, 4, 30, 11, 1500, 
12, 1, 1, 15, 8, 500, 3000, NA, 30, 0, 21, 700, 800, 4, 8, 16, 
100, 4, 6000, NA, NA, 1000, 250, 800, 100, NA, 12, 0, NA, 900, 
150, 6, 2500, 2, 2000, 20, 12, 10, 2300, 6, 25, 10, 30, 250, 
3000, 4200, NA, 1200, 2, 200, 100, 3, 200, 800, 0, 20, 18000, 
1500, 1000, 5, 10, 20, 30, 55, 25, 10, NA, 1500, 500, 0, 32, 
6500, 300, 300, 0.5, 0, 2000, 0.25, 1900, 25, 3000, 2, 250, 1000, 
20, 600, 500, 1000, 1000, 25, 100, 500, NA, 20, 3000, NA, 300, 
12, 9, 700, 300, 3, 30, 200, 0, 600, NA, 100, 26, 3500, 4, 400, 
12, 2000, 450, 4000, NA, 20, 60, 60, 1500, 15000, 40, 120, 2400, 
40, 40, 25, 800, 1200, NA, 25, 2500, 20, 13, 10, NA, 200, 1200, 
1200, NA, 0, 1600, 20, NA, 100, 2400, 2000, 2000, 700, 350, 3000, 
800, 600, 12, 300, 100, 30, 60, 4000, 20, 1200, 50, 4000, 70, 
1000, 700, 15, 10, 2, 80, 1500, 4000, 4000, 30, 50, 6, 200, 3, 
6, 16, NA, 176, 130, 300, 300, 50, 1, 2000, 400, 300, 750, 13, 
2000, 100, 5000, 2500, 1600, 3000, 30, 40, 30, 300, 5, 1700, 
500, NA, 70, 1000, 300, 10, NA, 30, 25, NA, 7, 12, 12, 30, 0.1, 
500, 25, 5000, 70, 0, 600, 28, 300, 1500, 800, 500, 120, 1600, 
NA, 500, 250, 900, 30, 0.4, 20, 1000, 90, 20, 400, NA, NA, 0, 
1900, 500, NA, 80, 700, 3, NA, 35, 5000, 4000, 2500, 320, 3500, 
NA, 2000, 6, 4, 4, 5, 4, 4, 5, 4, 0, 2, 0, 6, 0, 7.5, 0, 6, 0, 
0, 4, 0, 0, 0, 4, 0, 0, 0, 0, NA, 0, 0, 2, 2, 3, 0, 0, 0, 2, 
4, 4, 0, 5, NA, NA, 0, 0, 7, 0, 5, 0, 2, 2, 0, 4, 0, 0, 4, 5, 
4, 5, 0, 5, 3, 5, 4, 6, 6, 0, 0, 0, 0, 0, 6, 3, 4, 0, 0, 3, 4, 
4, 5, 2, NA, NA, NA, 4, 4, 4, 7, 0, 5, 4, 4, 5, 3, 0, 6, 6, 5, 
5, 6, 5, 0, 0, 0, 0, 3, 3, 3, 5, 0, 3, 3, 5, 5, 0, 0, 6, 0, 4, 
0, 4, 0, 9, 3, 0, 0, 0, 4, 5, 0, 0, 2, 7, 0, 4, 0, 7, 4, 0, 5, 
0, 5, 0, 8, 5, 5, 4, 6, 0, 5, 0, 0, 0, 10, 0, 5, 0, NA, 5, 1, 
3, 4, 4, 3, 0, 5, 1, 0, 0, 0, 0, 4, 4, 2, 5, 3, 0, 3, NA, 5,
6, 0, 5, 0, 4, 0, 4, 6, 0, 0, 0, 0, 5, NA, 0, 5, 1, 4, 4, 4, 
0, 3, 4, 0, 5, 2, 0, 0, 0, 7, 0, 0, 0, 0, NA, NA, NA, NA, 2, 
3, 4, 0, 7, 6, 0, 2, 0, 0, 4, 4, 7, 0, 4, 2, 4, 4, 0, 6, 3, 0, 
0, 3.5, 0, 2, 8, 6, 1, 2, 0, 4, 4, 4, 4, 4, 4, 4, 5, 0, 10, 10, 
10, 5, 0, 1, 5, 2, 4, 2, 2, 3, 3, 5, 7, 7, 6, 6, 7, 5, 0, 6, 
5, 7, 0, 7, 5, 5, 0, 1, 6, 5, 4, 5, 7, 0, 0, 6, 2, 6, 6, 0, 0, 
0, 0, 0, 0, 2, 5, 0, NA, 0, 2, 0, NA, 3, 0, 0, NA, 6, 2, 2, 4, 
0, 4, 7, 7, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 
2, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 
2, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 2, 1, 2, 1, 4, 1, 
1, 2, 2, 2, 1, 1, 1, 1, 4, 2, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 
2, 2, 1, 1, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 
2, 1, 2, 2, 2, 1, 1, 2, 4, 3, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 
1, 2, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 
1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 
1, 1, 2, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 3, 
1, 2, 4, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 1, 2, 2, 1, 4, 1, 
1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 4, 1, 1, 2, 2, 2, 1, 2, 2, 
4, 2, 1, 2, 1, 1, 2, 2, 2, 2, 1, 2, 4, 4, 1, 1, 2, 2, 1, 2, 1, 
1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 
1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 4, 2, 1, 1, 1, 1, 2, 2, 2, 
1, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 2, 
2, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2.9, 3, 2.7, 2.8, 2.7, 
3.2, 2.3, 3.1, 1.9, 2, 2.7, 3, 3.6, 3.6, 2.7, 3.5, 2.6, 2.4, 
1.4, 2.8, 3.1, 2.3, 2.2, 1.5, NA, 1.5, 2, 2, 2.3, 1.9, 3, 2, 
1, 2, 1, 2, 3.1, 1, 1, 1.8, 3.5, 2, 2, 2, 2, 3, 2.5, 3.3, 3, 
2, 3.3, 1, 2.6, 3.1, 2, 3, 2, 2, 3, 3, 3, 2.9, 3.5, 3.3, 3, 2.8, 
3, 2, 3, 2.9, 3, 3, 3, 2.6, 2.2, 2.5, 3, 2, 2.6, 3, 3.2, 2, NA, 
2.3, 3.1, 2, 3, 2.5, 3, 2.5, 3, 2.6, 2, 2.3, 3, 3.6, 2.4, 2, 
3, 2.1, 3.1, 3, 3, 3.5, 3, 3, 3, 3.1, 2.3, 2.6, 3.5, 2, 2.5, 
3.1, 2.3, 2, 2.6, 3, 2.6, 3, 2.4, 3, 2.7, 3.5, 3, 3, 3.2, 2.8, 
3, 2.2, 2, 2, 2.9, 3.1, 2.6, 2.6, 2, 2, 2.5, 2.8, 2.1, 3.4, 2.8, 
2, 2, 3.4, 3, 2.2, 3, 2, 2.5, 3, 2.6, 3, 3, 3.5, 2.6, NA, 1.9, 
2, 2.5, 3, 3.1, 3.2, 2, 3, 2.8, 3, 3, 3, 3, 2.9, 2, 3.2, 3, 3, 
3, 3, 4.5, 3, 3, 3, 2, 3, 3.2, 2.4, 3, 1, 2.7, 2.7, 3, 2, 2, 
3.1, 3.4, 2, 2.6, 1, 3, 3.1, 2, 3, 3, 2.9, 2.3, 2, 3, 2, 3, 2.3, 
3.2, 3.2, 3.6, 3, 3, 2.6, 3.1, 2, 1.9, 2.6, 3, 3.3, 3, 3.5, 2,
2.6, NA, 2, 3, 2, 3.4, 2, 3.1, 2, 3.4, 2, 3, 3, 2.9, 3, 1, 2.3, 
2.1, 3.2, 3.2, 3.9, 2, 2, 3, 3, 2.5, 2, 2.1, 3, 2.9, 3.1, 3.2, 
3, 2, 3.1, 3.4, 3, 2.7, 2.7, 3, 3.1, 3, 3, 2.3, 2.3, 2.7, 2.3, 
2, 3.1, 3.2, 3, 3, 2.3, 3, 3, 1, 3, 3.2, 2, 2, 2.1, 2, 3, 2.7, 
3, 3, 3.4, 3, 4, 3, 3.1, 3.3, 3.6, 3, 3, 3, 2, 2.8, 2, 1.8, 3, 
1.9, NA, 3.3, 2, 3, 3, 3, 2, 2, 1.4, 10, 3, 1.4, 2, 3, 2.9, 3, 
2.9, 2.2, 3, 4, 3.3, 2.5, 2, 4, 1.7, 3.3, 1, 3, 1.3, 4, 4.3, 
4, 3, 3.3, 3, 1, 0.7, 3, 2, 3, NA, 1.7, 1.3, 1.7, 2.3, 2, 3.7, 
2, 4, 1.7, 3, 1, 3, 1, 2.3, 1, 1, 2, 4, 2, 3, 1, 2, 3, 3, 2, 
2.7, 2, 4, NA, 2, 3, 2, 3.7, 1, NA, 2.7, 3, 3, 2, 8, 3, 2, 2, 
9, 1, 3, 3, 3, 3, 5, 2, 1, 3, 4, 2, 11, 4, 4, 1.8, NA, NA, 3, 
2, 2, 3, 3, 12, 3, 2, 2, 10, 3, 5, 3, 2, 1, 2, 4, 3, 1, 4, 3, 
3, 2, 3, 2, 2, 4, 2, 2, 3, 3, 3, NA, 3, 2, 5, 3, 3, 10, 4, 4, 
3, 1.7, 3, 4, 3, NA, NA, 2, 2, 2.7, 3.7, 4, 3, 2, 1, NA, 7, 2, 
3, 1, 5, 3, 2.7, 3, 2, 4, 3, 3, 3.7, 3, NA, 3, NA, 1, 2, 3, 2, 
1, NA, 3, 3, 3, 5, 3, 2, 4, 2, 2, 2, NA, 10, 4, 3, 1, 4, 3, 5, 
2, 4, 2.3, 1, 3, 1, 5, 4, 3, 2, 1, 8, 3, 2, 1, 1, 10, 3, 2, 3, 
1, 2, 1, 3, 1, 3, 3, 2, 5, 3, 4, 2, 3, 3, 3, 3, 3, 3, 2, 3, 3, 
5, 4, 2, 5, 1, 3, 4, 3, 3, 2, 1, 4, 2, 3, 3, 3, 2, 1, 3, 3, 4, 
3, 4, 4, NA, 4, 4, 1, 1.3, 3, 4, 1.3, 3, 4, 4, 3, 2, 2, 5, 3, 
4, 4, 3, 5, 3, 3, 2, 2, 1, 3, 3, 2, 3, 5, 3, 4, 3, 2, 3, 3, 3, 
2, 6, 2, 3, 2, 4, 3, 4, 4, 2, 5, 3, 3, 4, 4, 4, 4, 4, 4, 2, 1, 
5, 1, NA, NA, 1, 4, 3, 4, 3.3, 5, 1.3, 8, 4, 1, 9, 2, 5, 5, 10, 
7, 3, 4, 1, 3, 4, 4, 4, 3, 3, 2, 3, 3, 3, 3, 3, 4, 3, 3, 4, 3, 
3, 5, 3, 3, 3, 2, 3, 5, 3, 1, 1, 1, 3, 3, 3, 3, 5, 3, 2, 3, 3, 
1, 4, 3, 3, 3, 3, 3, 4, 1, 3, 4, 3, 3, 1, 4, 3, 5, 5, 4, 3, 3, 
3, 4, 4, 3, 4, 3, 4, 5, 3, 3, 4, 1, 3, 4, 3, 3, 3, 3, 3, 1, 3, 
3, 3, 3, 4, 4, 4, 3, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 4, 3, 4, 4, 
3, 3, 5, 3, NA, 3, 3, 1, 4, 4, 4, 3, 3, 1, 3, 4, 4, 3, 4, 3, 
3, 4, 3, 4, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 5, 3, 
3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 5, 5, 3, 4, 4, 4, 3, 4, 3, 4, 4, 
3, 3, 3, 3, 4, 3, 3, 3, 1, 4, 3, 4, 3, 3, 3, 3, 3, 1, 3, 3, 3, 
1, 3, 3, 5, 3, 3, 3, 4, 3, 3, 4, 1, 3, 3, 3, 3, 3, 4, 3, 3, 3, 
3, 4, 3, 3, 3, 3, 3, 3, 4, 3, 1, 3, 1, 3, 4, 3, 4, 4, 3, 4, 4, 
3, 4, 3, 3, 4, 3, 3, 3, 4, 4, 3, 3, 1, 3, 3, 4, 4, 4, 1, 3, 4, 
3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 1, 4, 4, 4, 3, 3, 4, 3, 4, 4, 3, 
3, 3, 4, 4, 4, 4, 3, 3, 3, 1, 3, 3, 3, 4, NA, 3, 3, 4, 4, 4,
4, 4, 3, 3, 1, 4, 4, 3, 3, 4, 3, 3, 3, 3, 4, 3, 3, 2.3, 3, 3, 
5, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 2, 2, 2, 2, 1, 1, 1, 
1, 1, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 
1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 
2, 1, 2, 1, 2, 2, 1, 2, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 
2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 1, 2, 1, 
1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 
1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 2, 2, 1, 2, 2, 
1, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 
2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 
1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 
1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 
1, 2, 2, 2, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 
1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 2, 
2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 
2, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 
1, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 1, 
2, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 2, 1, 
1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 0, 1, 1, 0, 0, 
0, 1, 2, 1, 0, 1, 2, 1, 0, 2, 1, 1, 1, 2, 1, 1, 1, 0, 2, 1, 1, 
1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 
1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 0, 2, 1, 1, 
1, 0, 1, 0, 2, 1, 1, 1, 0, 1, 2, 1, 1, 1, NA, 1, 2, 1, 1, 1, 
1, 1, 1, 2, 1, 1, 1, 0, 2, 2, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, 
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 
1, 1, 0, 1, 0, 1, 2, 2, 0, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 0, 
2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 
1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 
1, 2, 2, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 
1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 0, 2, 1, 1, 
1, 2, 2, 1, 0, NA, 2, 1, 2, 1, 2, 2, 2, 1, 1, 1, 2, 2, 1, 0, 
2, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, NA, 1, 24, 40, 22, 11, 
25, 20, 28, 70, 40, 30, 20, 65, 80, NA, 12, 16, 16, 20, 40, 40, 
25, 40, 13, 74, 100, 50, 120, 18, 15, 18, 16, 18, 15, 18, 20, 
14, 24, 20, 20, 24, 35, 45, 65, 16, 20, NA, 23, 16, 40, 12, 12, 
55, 20, 84, 12, 15, 45, 18, 18, 17, 16, 108, 150, 18, 13, 15,
NA, 40, 214, 180, 24, 30, 98, 25, 30, 20, 20, 10, 13, 30, 120, 
11, 22, 13, NA, 59.6, 54, 30, 18, 25, 50, 60, 15, 12, 16, 32, 
14, 25, 16, 22.3, 24, 15, 10, 25, 80, 21, 50, 24, 16, 48, 35, 
11, 15, 200, 39, 120, 25, 14, 17, 25, 78, 75, 130, 120, 18, 24, 
38, 28, 76, 25, 30, 58, 80, 30, 30, 40, 74, 30, 100, 33, 20, 
140, 84, 30, 45, 116, 60, 20, 28, 50, 20, 58, 120, 10, 21, 22, 
15, NA, 30, 55, 70, 25, NA, 35, 40, 30, 90, 50, 120, 40, 20, 
12, 20, 12, 14, 35, 50, 40, 34, 45, 16, 60, 2, 56, 25, 64, 62, 
14, 20, 15, 44, 32, 20, 34, 53, NA, 25, 11, 15, 200, 40, 15, 
15, 20, 40, 25, 75, 80, 20, 20, 59, 25, 30, 15, 21, 150, 90, 
30, 22, 64, 65, 15, 25, 72, 70, 20, 50, 94, 30, NA, 15, 80, 70, 
200, 90, 50, 30, 20, 300, 20, 16, 18, 94, 65, 20, 200, 30, 16, 
20, 45, 30, 25, 35, 50, 35, 55, 13, 20, 24, 26, 18, 14, 15, 20, 
16, 18, 75, 12, 25, 40, 120, 89, 30, 65, 23, 58, 35, 82, 20, 
50, 44, 14, 160, 70, 90, 58, 68, 67, 100, 82, 60, 15, 16, NA, 
24, 45, 180, 200, 18, 20, 81, 55, 70, 20, 90, 20, 60, 13, 25, 
64, 40, 18, 20, 15, 130, NA, NA, 70, 25, 12, 28, 120, 38, 16, 
17, 13, 20, 5, 30, 15, 25, 60, 15, 60, 5, 40, 12, 85, 45, 45, 
20, 18, 40, 40, 45, 30, 70, 30, 1.15, 60, 90, 60, 10, 60, 3, 
15, 5, 8, 10, 20, 15, 45, 30, 35, 30, 70, 10, 60, 45, 45, 40, 
15, 6, 130, 5, 60, 15, 45, 20, 5, 20, 15, 10, 10, 25, 55, 60, 
90, 10, 15, 45, 30, 10, 30, 60, 15, 80, 15, 1, 60, 30, 50, 55, 
45, 10, 50, 5, 20, 30, 30, 12, 120, 15, 45, 8, 30, 30, 20, 45, 
25, 15, 5, 20, 5, 63, 20, 40, 40, 60, 60, 30, 10, 15, 20, 20, 
120, 5, 12, 20, 35, 40, 60, 10, 90, 18, 35, 30, 75, 40, 15, 32, 
50, 35, 25, 8, 80, 5, 10, 64, 15, 30, 25, 45, 5, 30, 30, 60, 
10, 10, 100, 60, 15, 40, 15, 10, 60, 60, 70, 20, 45, 15, 100, 
40, 20, 15, 50, 30, 25, 30, 20, 60, 35, 15, 60, 110, 25, 45, 
35, 40, 10, 70, 50, 40, 35, 40, 40, 50, 60, 3, 20, 45, 50, 2, 
50, 50, 18, 25, 15, 45, 5, 120, 30, 30, 20, 30, 90, 60, 90, 30, 
10, 40, 90, 60, 40, 10, 30, 65, 50, 45, 45, 60, 30, 90, 10, 20, 
5, 30, 40, 10, 30, 10, 60, 35, 50, 70, 60, 120, 60, 15, 20, 90, 
80, 40, 25, 20, 15, 4, 45, 60, 35, 45, 20, 20, 10, 8, 25, 45, 
35, 60, 35, 15, 20, 90, 20, 20, 2, 25, 20, 10, 90, 20, 15, 20, 
5, 30, 30, 25, 10, 20, 15, 5, 20, 30, 45, 50, 2, 45, 50, 20, 
30, 15, 65, 15, 20, 20, 15, 12, 4, 30, 30, 5, 20, 30, 100, 90, 
20, 105, 70, 40, 40, 20, 30, 3, 120, 150, 10, 10, 40, 5, 45,
30, 10, 20, 35, 50, 60, 60, 15, 50, 50, 50, 50, 40, 25, 300, 
20, 200, 100, 200, 34, 3, 30, 150, 100, 2, 30, 50, 150, 60, 60, 
50, 10, 30, 10, 300, 20, 100, 50, 50, 20, 6, 80, 200, 100, 20, 
20, 50, 0, 100, 20, 200, 30, 30, 30, 20, 200, 4, 7, 150, 20, 
100, NA, 100, NA, 40, 100, 12, 30, 6, 60, 400, 65, 50, 50, 150, 
2, 1000, 100, 40, 30, 20, 30, 100, 30, 60, 20, 90, 80, 40, 100, 
50, 301, 100, 20, 60, 150, 100, 200, 40, 25, 150, 250, 25, 100, 
15, 40, 30, 20, 200, 120, 30, 5, 50, 30, 10, 100, 80, 50, 4, 
30, NA, 50, 25, 50, 20, 50, 100, 50, 0, 400, 60, 80, 20, 80, 
60, 75, 70, 180, 50, 30, 40, 30, 200, 52, 30, 100, 42, 100, 200, 
150, 200, 30, 50, 30, 70, 75, 60, 150, 200, 150, 10, 30, 100, 
7, 80, 300, 50, NA, 60, 250, 15, 250, 40, 40, 20, 150, 50, 80, 
30, 50, 300, 50, 40, 15, 130, 10, 30, 50, 100, 100, 50, 60, 50, 
400, 10, 50, 300, 0, 50, 200, 50, 50, 100, 5, 100, 80, 300, 50, 
10, 5, 70, 200, 200, 30, 40, 20, NA, 100, 10, 100, 150, 46, 20, 
200, 30, 40, 30, 80, 150, 30, 15, 100, 100, 50, 30, 50, 100, 
30, 20, 30, 30, 140, 20, 50, 100, 100, 0, 100, 200, 30, 530, 
50, 250, 180, 20, NA, 250, 30, 200, 200, 15, 20, 55, 15, 80, 
120, 2, 50, 50, 50, 150, 7, 50, 10, 60, 250, 40, 40, 100, 50, 
100, NA, 800, 150, 10, 450, 2000, 50, 10, 50, 42, 20, 0, 50, 
100, 200, 50, 10, 180, 85, 100, 20, 50, 25, 80, 75, 100, 80, 
80, 40, 20, 50, 300, 5, 100, 100, 150, 40, NA, 20, 170, 30, 5, 
50, 150, 100, 30, 250, 150, 10, 60, 300, 120, 100, 50, 20, 20, 
30, 40, 100, 50, 150, 25, 100, 24, 50, 20, 20, 150, 2, 40, 100, 
25, 200, 250, 30, 14, 20, 40, 100, 30, 50, 20, 20, 40, 20, 20, 
200, 200, 10, 100, 20, 10, 1000, 20, 300, 40, 20, 15, 100, 50, 
50, 10, 20, 15, 20, NA, 20, 100, 30, 15, 11, 20, 20, 400, 25, 
150, 25, 36, 100, 30, 500, 50, 100, 30, 40, 50, 100, 45, 70, 
100, 33, 100, 30, 26, 150, 40, 100, 100, 150, 100, 70, 50, 30, 
120, 30, 15, 30, 20, 40, 3, 50, 100, 20, 25, 20, 10, 20, 150, 
20, 50, 50, 20, 40, 100, NA, 50, 15, 200, 70, 80, NA, 10, 20, 
150, 80, 100, 48, 30, 70, 70, 25, 200, 80, 40, 30, 50, 50, 40, 
100, 100, 87, 35, 200, 20, 30, 10, 200, 100, 250, 90, 40, 40, 
20, 150, 10, 50, 20, 20, 200, 30, 40, NA, 100, 20, 15, 5, 100, 
50, 25, 20, 20, 20, 70, 1, 10, 5, 70, 10, 30, 15, 20, 5, 100, 
50, 20, 100, 100, 300, 2, 50, 100, 20, 50, 50, 30, 60, 30, 20, 
20, 100, 150, 200, 5, 1, 40, 20, 10, 30, 100, 10, NA, 50, 20,
100, 30, 30, 40, 50, 10, 40, 4, 100, 100, 20, 40, 300, 50, 1, 
80, 20, NA, 40, 40, 100, 50, 50, 40, 20, 60, 20, 0, 0, 70, 15, 
300, 50, 100, 100, 20, NA, 100, 60, 17, 50, 100, 40, 40, 15, 
60, 20, 100, 30, 80, 80, 500, 60, 60, 10, 120, 25, 30, 35, 200, 
50, 80, NA, 50, 100, 25, 50, 50, 50, 35, 15, 38, 50, 40, 15, 
100, 10, 40, 100, 50, 12, 10, 20, 100, 20, 180, 75, 200, 30, 
35, 50, 30, 400, 200, 200, 100, 10, 150, 80, NA, 1000, 80, 20, 
20, 50, 300, 50, NA, 25, 500, 10, 40, 50, 45, 50, 100, 78, 30, 
32, 45, 25, NA, 30, 15, 26, 31, 35, 30, 53, 15, 0, 25, 8, 10, 
45, 25, 40, 30, 29, 10, 20, 15, 50, 300, 60, 5, 10, 50, 10, 17, 
28, NA, 0, 27, 67, 30, 40, 85, 60, 1, 30, 25, 30, 160, 143, 20, 
25, 0, 20, NA, 29, 15, 15, 12, 7.8, 14, 15, 20, 90, 50, 20, 15, 
40, 5, 20, 28, 25, 70, 15, 18, 25, 10, 35, 15, 20, 105, 8, 46, 
30, 50, 10, 92, 30, 15, 45, 30, 30, 10, 42, 15, 10, 55, 40, 20, 
60, NA, 30, 0, 25, 60, 15, 20, 70, 15, 32.62, 40, 40, 40, 30, 
60, 20, 0, 50, 0, 30, 25, 15, 15, 30, 60, 50, 140, 23, 50, 45, 
20, 23, 25, 10, 28, 20, 20, 15, 25, 15, NA, 12, 100, 25, 15, 
0, 65, 50, 35, 0, 35, 75, 40, NA, 20, 55, 37, 42, NA, 15, 15, 
15, 66, NA, 40, 60, 35, NA, 23, 50, NA, 30, 25, 15, 12, 50, 50, 
0, 30, 36, 106, 25, 15, 15, 60, 50, 2, 15, 15, 160, 50, 25, 90, 
40, 25, 96, 10, 50, 0, 50, 30, 40, 46, 22, NA, 50, 50.74, 40, 
80, 15, 50, 15, 5, 15, 40, 65, 10, 15, 15, 40, 50, 60, 27, 100, 
30, 15, 40, 17, 18, 0, 12, 30, 12, 25, 25, NA, 35, 0, 65, 55, 
0, 20, 30, 0, 0, 48, 30, 15, 45, 25, 50, 10, 15, 0, 50, 35, NA, 
60, 20, 15, 100, 25, 60, 32, 10, 17, NA, 20, 41, 15, 15, 90, 
NA, 30, 40, 25, 30, 85, 30, 150, 16, 22, NA, 0.8, 40, 33, 70, 
90, 73, 15, 12, 30, 22, 12, 15, 20, 38.5, 20, 18, 97, 21, 30, 
45, 15, 30, 60, 10, 28, 85, 150, 15, 50, 10, NA, 35, 30, 0, NA, 
15, 30, NA, 98, 25, 20, 15, 28, 0, 1000, 0, 0, NA, 700, 500, 
0, 200, 0, 0, 0, 400, 40, 50, 600, 0, 0, 65, 0, 1000, 200, 0, 
0, 200, 0, 100, 0, 800, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 1000, 80, 0, 0, 0, 600, 200, 1000, 0, 0, 800, 1000, 
0, 0, 0, 200, 600, 1000, 60, 200, 200, NA, 0, 800, 0, 0, NA, 
450, 0, 600, 100, 150, 450, 600, 800, 800, 10, 0, 0, 100, 0, 
0, 50, 750, 0, 1000, 750, 900, 400, 0, 0, 200, 0, 1300, NA, NA, 
0, 500, 1000, 500, 0, 600, 0, 0, 0, 0, 0, 500, NA, 500, 400, 
1000, 100, 1000, 500, 600, 0, NA, 200, 0, 800, 600, 400, 150,
0, 500, 800, 0, 0, 0, 0, 0, 250, 0, 400, 300, 350, 0, 0, 500, 
700, 1000, 900, 400, 200, 250, 170, 1000, 0, 0, 0, 1000, NA, 
200, 180, 700, NA, 350, 500, NA, 1000, 30, 0, 980, 200, 450, 
0, 150, 150, 0, 600, 300, 1100, 0, 210, 1000, 0, 1000, 1000, 
0, 1100, 800, 0, 60, 100, 0, 500, 0, 170, 1000, 0, NA, 850, 0, 
NA, 200, 1000, 400, 0, 100, 0, 0, 200, 600, 0, 300, NA, 10, 50, 
200, 1200, 1000, 100, 0, 0, 600, NA, 0, 500, 500, 300, 400, NA, 
36, 0, NA, 1000, 800, NA, 50, 0, 400, 1000, 800, 0, 0, 130, 0, 
400, 500, NA, 1000, 0, 0, 500, 0, 100, 0, 1000, 850, 180, 1000, 
150, 0, 0, 450, 1000, 500, 400, 0, 300, 400, 250, 800, NA, 600, 
NA, 0, 400, 1000, 800, 1000, 400, 800, 300, 0, 700, 700, 500, 
1000, 1000, 0, 0, 300, 0, 1000, 50, 450, 0, 100, 900, 500, 80, 
0, 0, NA, 600, 200, 0, 300, 1000, 200, 0, NA, 0, 0, 30, 0, 0, 
150, 0, 0, 0, 0, 200, 1000, 1000, 1000, 500, 0, 5, 5, 7, 5, 9, 
9, 5, 10, 5, 9, 8, 2, 5, 2, 5, 5, 5, 5, 5, 6, 5, 5, 6, 6, 7, 
NA, 5, 5, 9, 5, 11, 5, 5, 11, 5, NA, 6, 5, 5, 5, 5, NA, 10, 5, 
5, 5, 5, 5, 5, 10, 5, 1, 5, NA, 5, 5, 5, 2, 4, 5, 5, 5, 2, 5, 
5, 5, 2, 5, 5, 5, NA, 9, 5, 5, 5, 6, 10, 5, 6, 5, 4, 5, NA, 6, 
5, 5, 6, 2, 2, 5, 10, 6, 5, NA, 6, NA, 5, 10, 6, 5.1, 5, 10, 
5, 2, 5, 5, 6, 10, 2, 5, 6, 5, 4, 9, 7, 5, 6, NA, 11, 5, 5, 2, 
4, 5, 6, 5, 5, 2, 5, 5, 5, 6, 5, 11, 6, 5, 2, 5, 5, 5, 2, 5, 
5, 10, 6, 5, 5, 10, 6, 2, 10, 6, 5, NA, 5, 6, 5, NA, 5, 2, 5, 
2, 5, 1, 6, 5, 5, 5, 5, 6, 6, 5, 5, 5, 6, 4, 5, 10, 5, 6, 5, 
5, 2, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, NA, 6, 
6, 5, 9, 5, 6, NA, NA, 2, 9, 10, 5, 2, 2, NA, 5, 5, 5, 5, 1, 
6, 5, 1, 5, 9, 5, 5, 5, 10, 6, 5, 8, 2, 9, 6, 5, 5, 5, 5, 10, 
8, 2, 6, 5, 1, 7, 5, 5, 5, 2, 1, 11, 11, 10, 6, NA, 6, 2, 9, 
9, 6, 6, 5, 5, 5, 5, 6, 2, 1, 5, 5, 5, 6, 6, 5, 6, 5, 6, 10, 
5, 5, 2, 5, 11, 4, 10, 5, 2, 5, 5, 5, 1, 5, 5, 6, 2, 5, 5, 7, 
6, 5, 7, 2, 8, 1, 6, 5, 5, 5, 9, NA, 5, 10, 5, 6, 8, 7, 5, 6, 
2, 6, 6, 3, 2, 6, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 
1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, NA, 1, 1, 2, 2, 
1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1,
1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 
1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 
1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 
2, 1, 2, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 
1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 
2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 
NA, NA, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 400, 550, 
500, 500, 300, 100, 300, 100, 300, 500, 500, 600, 300, 50, 500, 
300, 400, 300, 200, 500, 500, 500, 500, 500, 500, 100, 300, 400, 
250, 380, 500, 600, 500, 500, 600, 400, 550, 500, 650, 300, NA, 
600, 300, 600, 150, 500, 500, 500, 1000, 500, 500, 500, 350, 
400, 550, 200, 400, 300, 400, 100, 400, 600, 500, 500, 200, 300, 
100, 800, 150, 400, 500, 300, 100, 400, 300, 300, 200, 200, 200, 
600, 500, 700, 500, 600, 400, 550, 550, 400, 500, 500, 200, 250, 
200, 300, 300, 400, 250, 600, 500, 400, 300, 200, 600, 250, 400, 
550, 650, 500, 580, 1000, 500, 500, 400, 400, 300, 200, 1000, 
400, 500, 500, 1000, 500, 600, 300, 500, 600, 450, 400, 600, 
80, 300, 400, 600, 250, 300, 600, 600, 500, 800, 500, 300, 300, 
900, 200, 400, 100, 500, 500, 300, 600, 400, 400, NA, 400, 800, 
750, 600, 1000, 200, 500, 200, 600, 300, NA, 500, 300, 300, 1750, 
300, NA, 200, 1000, 300, 100, 500, 500, 150, 100, 500, 550, 300, 
500, 500, 400, 300, 400, 600, 600, 300, 150, 500, 800, 800, 150, 
800, 50, 250, 350, 800, 500, 200, 400, 500, 600, 500, 500, 800, 
600, 400, 600, 600, 350, 60, 300, 200, 500, 300, 300, 700, 400, 
400, 200, 600, 500, 500, 200, NA, 500, 50, 200, 150, 500, 400, 
300, 550, 350, 400, 600, 500, 300, 700, 280, 300, 200, 300, NA, 
600, 500, 300, 700, 400, 100, 500, 250, 700, 250, 450, 400, 400, 
600, 600, 450, 100, 300, 250, 550, 500, 600, 500, 150, 500, 650, 
600, 400, 350, 500, 500, 800, 350, 400, 300, 700, 500, 600, 600, 
600, 1000, 1500, 400, 350, 400, 200, 300, 100, 500, 400, 200, 
300, 850, 100, 600, 600, 150, 400, 650, 300, 150, 600, 400, 500, 
650, 300, 20, 600, 500, 50, 610, 250, 500, 200, 200, 400, 800, 
300, 500, 20, 25, 35, 18, 30, 30, 25, 35, 25, 20, 30, 25, 35, 
16, 26, 25, 25, 30, 26, 32, 20, 21, 30, 35, 30, 30, 30, 24, NA, 
25, 40, 40, 40, 40, 20, 40, 28, 25, 15, 20, NA, 18, 16, 16, 28,
30, 38, 30, NA, 25, 25, 18, 45, 20, 25, 30, 10, 35, 30, 12, 40, 
25, 18, NA, 24, 8, 50, 15, 25, NA, 40, 30, 20, 45, 40, 14, 16, 
22, 22, 20, 25, NA, 20, 24, 40, 40, 40, 30, 30, 50, 20, 20, 50, 
50, 45, 18, 40, 30, 40, 40, 30, 35, 30, 25, 16, 25, 30, 35, 18, 
40, 10, 25, 50, 20, 55, 40, 10, 28, 20, 20, 12, 30, 35, 50, 30, 
28, 38, 35, NA, 24, 30, 30, 22, 24, 50, 70, 40, 22, 25, 25, 20, 
9, 60, 25, 25, 60, 29, 28, 26, 60, 35, 30, 30, 30, 45, 35, 45, 
30, 40, 30, NA, 35, 30, 18, 40, 20, 15, 30, 25, NA, 25, 35, NA, 
25, 20, 30, NA, 25, NA, 26, 30, 30, 35, 30, 20, 35, 40, 40, 35, 
30, 35, 25, 35, 35, 30, NA, 40, 38, 20, 30, 16, 25, 30, NA, 50, 
10, 56, 56, 40, 30, 25, 22, 30, 30, 10, 25, 25, 20, 35, 20, 35, 
48, 50, 20, 30, 38, 32, 16, 30, 25, 30, 35, 25, 20, 40, 25, 20, 
20, 22, 40, NA, 25, 40, 35, 30, 30, 30, 14, 27, 25, 47, 30, 36, 
50, 25, 27, 24, 40, 24, 24, 30, 24, 40, 20, 50, 30, 35, 30, 28, 
NA, 50, 30, 40, 30, 30, 35, 30, 25, 25, 26, 26, 40, 30, 32, 30, 
30, 35, 35, 30, 35, 32, 30, 28, NA, 45, 19, 25, 25, 20, 10, 27, 
50, 27, 21, NA, 35, 23, 40, 32, 40, 40, 10, 30, 25, 40, 50, NA, 
50, 30, 30, 35, 35, 40, 40, 15, 0, 12, 5, 20, 16, 8, 10, 0, 10, 
NA, 0, 0, 10, 0, 1, 6, 10, 12, NA, 10, 20, 40, 0, 15, 10, 25, 
NA, 10, 0, 10, NA, 6, NA, 15, 15, 0, 4, 0, 15, 10, 0, NA, 12, 
NA, 4, NA, 0, 20, NA, 9, 10, 15, NA, 0, 20, 8, 8, 8, 8, 7, 0, 
10, 10, NA, 8, 0, 10, 10, 6, NA, 0, 10, 15, 10, 0, NA, 0, 10, 
6, 0, 0, NA, 20, 0, 0, 19, 15, 15, 12, NA, 10, 10, 10, 7.5, 8, 
0, NA, 0, 10, NA, 22, 12, 15, 40, NA, NA, 10, 40, 10, 20, 20, 
10, 8, 0, 0, 20, NA, NA, 0, 12, 15, 8, 12, NA, 0, 0, 15, 10, 
8, NA, 10, 5, 10, 0, 0, 10, 11, 10, 10, 10, 10, NA, 8, 10, 12, 
15, NA, NA, 0, 0, 15, 10, NA, 16, 20, 15, 19, 10, 12, 8, 0, 0, 
0, 0, 10, 30, 20, 10, 30, 0, 20, 12, 10, 5, 10, 0, 10, 0, NA, 
10, 16, 10, 0, 0, 0, 0, 5, 8, 10, 15, 4, 0, 5, NA, 12, 0, 20, 
11, NA, NA, 8, 15, 10, NA, 10, 10, NA, NA, 10, 0, 0, 2, 0, 10, 
10, NA, 12, NA, 0, 5, 15, 6, 10, 5, 0, 10, 0, 0, NA, NA, 0, 8, 
12, 15, 14, 10, 0, 10, 20, 0, 7, NA, 0, 0, 0, 0, 10, 5, 0, NA, 
0, 6, 0, 8, 10, 6, 15, 10, NA, 8, 8, NA, 5, 2, 15, 12, 10, 8, 
10, NA, 10, NA, 0, 10, 15, 15, 6, 10, 8, NA, 6, 0, 35, 0, 14, 
8, 20, NA, 15, 10, 8, 10, 12, NA, 15, 15, 15, 10, 15, 24, 20, 
20, 0, NA, 20, 20, 0, 0, NA, 0, 7, 2, NA, 15, 20, 0, NA, 0, 10, 
5, 8, 0, 15, 0, 12, 14, 8, 10, 15, 10, 2, 10, 14, 5, 10, 5, 10,
5, 10, 24, 10, 14, 5, 7, 4, 10, 12, 0, 7, 14, 14, 2, 4, 6, 10, 
10, 10, 5, 5, 0, NA, 4, 7, 10, 5, 9, 15, 24, 20, 10, 6, 8, 10, 
NA, 12, NA, 20, 6, 0, 10, 16, 8, 14, 10, 8, 10, 15, 10, 30, 20, 
20, 5, 5, 8, NA, 14, 8, 20, 20, 0, 10, 20, 15, 20, 20, 10, NA, 
0, 10, 8, 4, 5, 30, 10, 10, 14, 14, 10, 30, 30, 19, 5, 15, 20, 
12, 18, 12, 20, 10, 15, 10, 15, 15, 0, 20, 20, 5, 5, 20, 5, 5, 
20, 0, 15, 3, 2, 20, 15, 21, 15, 10, 14, 5, NA, 8, 10, 20, 10, 
10, 10, 5, 12, 14, 0, 10, 16, 3, 9, 28, 0, 4, 8, 10, 30, 12, 
5, 10, NA, 10, 15, 15, 20, 6, 8, 5, 10, 10, 12, 8, 10, 30, 10, 
20, 10, 18, 20, 6, NA, 10, 10, 20, 1, 14, NA, 22, 5, 5, 20, 20, 
2, 10, 10, 6, 10, 13, 14, 10, 15, 10, 4, 6, 5, 20, 10, 10, 6, 
21, 10, 30, 10, 8, 20, 5, 20, 20, 20, 14, 20, 20, 10, 7, 20, 
5, 20, 15, 4, 4, 10, 15, 10, 10, 10, 10, 10, 20, 20, 20, 5, NA, 
5, 7, 20, 20, 20, 15, 8, 10, 15, 20, 20, 15, 15, 20, 22, 1, 12, 
15, 4, 30, 4, 6, 8, 14, 7, 10, 10, 10, 15, 10, 1, 20, 20, 4, 
4, NA, 3, 10, 14, 8, 15, 15, 2, 16, 8, NA, 6, 7, 12, 7, 1, 2, 
10, 1, 10, 28, 30, NA, 14, 6, 3, 8, 5, 8, 10, 10, 10, 8, 10, 
3, 20, 10, 3, 10, 10, 20, 2, 6, 10, 15, 0, 3, 5, 20, 3, 20, 8, 
6, 25, 14, 10, 3, 1500, 4000, 3000, 2.5, 2000, NA, 2, 2, 2, 1000, 
50000, NA, 2500, 1, 30, 15, 1800, NA, 3500, 5, 6, 4000, 2000, 
NA, 1000, 1000, 2500, 2500, 1.5, 7, 35, 0, 800, 12, NA, 10, 2000, 
2500, 1000, 2, 28000, 3000, NA, NA, 2500, 4000, 2000, NA, 0, 
2500, 30, 2500, 2, 16, 1.8, 2200, 1000, 15000, 2, 3, 10, 2000, 
NA, 15, 1.5, 2, 2, NA, NA, 38, 30, 10000, 50000, 30, 15, 1, 2, 
NA, 1500, 2, NA, NA, 100, 3000, 2000, 1000, 20, 100, 2, 1, 1, 
1800, 20000, 20000, 5000, 1.5, 25, 24, 1.4, 40, 30, 30, 20, 1800, 
1500, NA, 1500, 2000, 3000, 3000, 3, 1500, 1500, 1500, 1900, 
NA, 5, 4000, 2, 3, 2500, 1800, 2.5, 40000, 40, 3000, 4, NA, NA, 
1300, 1500, 35, 1, 20, 20, 120, 30, 120, 1500, 30, 1500, 5, 1500, 
5, 2200, 40, 40, 1500, 280, 2000, 1200, NA, 1000, 2500, 3, 30, 
4000, NA, 2000, 2, 1200, 8000, 90000, 20, 2000, 35, 18000, 3000, 
40, 2500, 1.5, NA, 1, 1100, 25, NA, 1500, 3, 2500, 2, 2000, 2200, 
2000, 5, 1, NA, NA, NA, 2500, 25, 2, 40, 30000, 1.5, 2, 40, 2100, 
3, 1500, 1, 2000, 1500, NA, 3, 36000, 36, NA, 2000, 3000, 2500, 
1700, 24, 2000, 1500, NA, 2000, 25, 240000, 3000, 2, NA, 2500, 
2000, 2000, 1500, 20, NA, 1999, 2, 15, 2500, 2.5, 5, NA, 50, 
99, 1200, 2000, 20000, 1, 1700, 22, 2, 0, 2.5, 1000, NA, 1500,
40, 50, 1e+05, 3000, 12, 20, NA, 2500, 1000, 2500, 1800, 2000, 
2500, 1000, 3, 100, 1500, 1500, 3500, 3000, NA, 3, 2000, 3000, 
3, NA, 45, 40, NA, 40, NA, 2, 1, 1.5, 6, 50, 50000, 3000, 2000, 
1500, 3, 3.5, 1000, 30, NA, 3000, 15000, 15000, 100, 2200, 2000, 
1300, 1300, 1500, 16, 22, 2, 30, 800, 15000, 30, NA, 2300, 50, 
7, 2, 3, NA, 2.5, 100, NA, 30000, 30000, 25000, 2000, 1800, 10, 
12, 12, 6, 8, 9, 9, 9, 11, 9, 14, 10, 11, 10, 12, 10, 10, 9, 
9, 9, 11, 9.5, 8, 10, 10, 9, 7, 9, 12, 9, 9, 9, 6, 9, 10, 9, 
9, 8, 2, 10, 8, 9, 5, 9, 10, 11, 10, 9, 9, 5, 14, 6, 9, 10, 8, 
10, 9, 6, 12, 8, 10, 10, 11, 9, 13, 9, 10, 8, 10, 10, 10, 10, 
10, 12, 10, 10, 10, 10, 9, 10, 9, NA, NA, 9, 10, 12, 12, 12, 
10, 10, 9, 9, 10, 9, 11, 12, 9, 9, 9, 10, 14, 10, 10, 12, 11, 
10, 9, 12, 10, 6, 10, 10, 10, 8, 15, 7, 12, 8, 10, 9, 9, 10, 
10, 9, 6, 10, 9, 8, NA, 7, 9, 9, 10, 10, 9, 10, 12, 10, 8, 10, 
10, 9, 10, 10, 8, 14, 9, 10, 8, 10, 9, 10, NA, 12, 15, 10, 9, 
10, 9, 9, 8, 9, 10, 10, 10, 12, 9, 3, 10, 10, 10, 9, 10, 10, 
10, 10, 9, 9, NA, 11, 10, 11, 11, 12, 10, 11, 10, 10, 11, 10, 
12, 10, 9, 10, 10, 9, 12, 10, 10, 11, 10, 9, 9, 10, 10, 10, 10, 
9, 11, 10, 15, 10, 10, 11, 9, 9, 9, 9, 10, 10, 8, 9, 10, 11, 
10, 9, NA, 11, 10, 9, 11, 8, 13, 12, 9, 9, 10, 10, 9, 10, 6, 
8, 9, 10, 10, 8, 11, 8, 10, 9, 8, 9, 9, 1, 12, 2, 10, 11, 10, 
10, 12, 10, 8, 10, 8, 12, 12, 10, 9, NA, 9, 9, 10, 8, 9, 10, 
10, 10, 10, 10, 10, 9, 12, 9, 9, 11, 10, 12, 12, 12, 8, 10, 9, 
9, 10, 0.9, 9, 9, 9, 10, 9, 8, 10, 10, 10, 10, 9, 8, 10, 10, 
10, 10, 8, 12, 8, 10, NA, 10, 9, 6, 12, 12, 12, 11, 10, 624, 
610, 600, 540, NA, NA, 60, 300, 600, NA, NA, 55, NA, 50, 52, 
480, 480, 480, NA, NA, 600, 550, NA, 550, NA, 600, 600, NA, 500, 
NA, NA, NA, 600, 600, NA, NA, 600, 45, 600, 500, 600, NA, NA, 
200, 580, 580, 600, 6, NA, 600, 60, NA, 700, 540, 10, 600, 701, 
5, 5, 610, 780, 60, 600, NA, 500, 500, 501, 540, NA, NA, 600, 
600, 600, 600, 700, NA, 647, 636, NA, 600, 72, NA, NA, NA, NA, 
NA, NA, 500, 68, 700, 450, 520, 600, 580, NA, 54, NA, 600, 600, 
723, NA, NA, NA, 50, 75, 45, NA, 600, 500, 500, NA, 20, 550, 
47, 6000, 600, 600, 50, 75, 45, 660, 600, 513, 720, 650, 650, 
624, 650, NA, NA, NA, 600, 45, 480, 500, 1, 600, 780, 720, 650, 
600, NA, 600, 650, 517, NA, NA, NA, 500, 520, 1350, 1350, 55, 
10, 52, 850, 999, 70, 500, NA, 600, 500, 24, 68, 613, 48, NA,
40, 40, NA, 45, 750, NA, 720, 720, 500, 55, 45, NA, 816, NA, 
600, 60, 600, 10, 600, 480, NA, NA, 60, 567, 56, 600, NA, 444, 
NA, 600, 580, 45, 58, NA, 540, 100, NA, 600, 55, NA, NA, 600, 
NA, 580, 600, 70, 400, 50, NA, 60, 40, 600, 640, 640, NA, NA, 
606, 720, 45, NA, NA, 800, 720, 500, 500, 55, NA, NA, 300, 114, 
1400, NA, 600, 54, 570, 550, 550, 816, 150, NA, NA, 58, 600, 
577, 588, 600, 600, 999, NA, 60, 500, 560, 560, 504, 52, 540, 
300, 17, 600, 900, 350, 700, NA, 620, 40, 700, 600, 750, 55, 
120, 60, 60, 52, 46, 600, 600, 600, 600, 500, NA, NA, 600, 800, 
800, 12, 630, 550, 550, 720, 720, 60, 690, 600, 712, 720, 760, 
50, 46, 600, 600, NA, 28, NA, NA, 55, 45, 3, 500, 600, NA, 575, 
55, 55, 600, 575, 600, 800, 766, 5, 1, 3, 5, 2, 5, 6, 5, 5, 3, 
9, 2, 1, 5, 1, 5, 3, 1, 5, 7, 1, 1, 1, 9, 5, 5, 1, 5, 5, 4, 7, 
1, 7, 9, 9, 7, 3, 9, 9, 7, 3, 9, 7, 9, 5, 1, 9, 6, NA, 1, 1, 
8, 1, 7, 7, 1, 1, 1, 3, 1, 1, 5, 1, 1, 4, 6, 1, 5, NA, 9, 9, 
2, 7, 5, 1, 1, 5, 5, 3, 1, 2, NA, NA, 4, 9, 8, 3, 6, 2, NA, 1, 
5, 1, 1, 1, 7, 9, 1, 1, NA, 9, 5, 1, 2, 1, 3, 1, 3, 3, 2, 5, 
5, 2, 3, 7, 3, 1, 1, 5, 8, 1, 1, 5, 5, 8, 1, 8, 7, NA, 5, NA, 
1, 3, 2, 5, 3, 3, 2, 7, 5, 1, 7, 3, 7, 9, 6, 5, 5, 6, 5, 9, 5, 
5, 1, 1, 1, 3, NA, 5, 1, 5, 8, 5, 6, 1, 9, 5, 7, 1, 9, 5, 8, 
3, 3, 1, 2, 7, 7, 9, 2, 6, 5, 1, 1, 5, 3, 2, 8, 1, 1, 9, 2, 9, 
5, 1, 5, 1, 5, 3, 7, 5, 1, 5, 1, 4, 9, 5, 9, 8, 1, 5, 1, 1, 1, 
5, 1, 5, 6, 3, 2, 9, 4, 2, 1, 6, NA, 1, 7, 9, 3, 1, 1, 5, 5, 
3, 8, 5, 6, 9, 3, 4, 1, 2, 1, 1, 1, 1, 9, 1, 2, 1, 9, 1, 1, 2, 
7, 1, 5, 9, 9, 5, 1, 5, 8, 1, 5, 7, 8, 2, NA, 5, 5, 5, 9, 3, 
7, 5, 5, 8, 5, 9, 4, 1, 3, 1, 1, 9, 1, 1, 3, 5, 1, 1, 3, 2, 1, 
1, 1, 1, 9, 9, 3, 1, 1, 1, 9, 1, 5, 2, 7, 8, 9, 6, 5, 5, 4, NA, 
1, 3, 5, 1, 9, 5, 1, 5), .Dim = as.integer(c(325, 37)), .Dimnames = list(
    NULL, c("geschlecht", "groesse", "gewicht", "alter", "haarfarbe", 
    "haarlaenge", "schuhegroesse", "brueder", "schwestern", "groesse-mutter", 
    "groesse-vater", "glueckszahl", "rauchen", "urlaubs-km", 
    "wiwi-fete", "studiengang", "abi-note", "mathe-note", "verkehrsmittel", 
    "wohnen-bei-eltern", "rechner", "wohnung", "wegzeit", "cds", 
    "buecher", "handy", "auto-km", "zeitung", "studienort", "euro-verbrauch", 
    "studierzeit", "verdienzeit", "tv-zeit", "gehalt", "studiendauer", 
    "dekansalter", "partei")))



#:9


#10:
skript.p.165<-0.01*c(
172,51,66,414,292,14,97,157,10,441,9,467,168,193,27,311,179,87,154,11,
282,771,133,351,1313,323,428,432,133,129,468,97,213,441,539,452,48,22,115,103,
390,142,26,76,199,386,87,120,432,311,364,107,360,12,411,55,16,313,46,186,
423,157,106,460,817,259,215,38,4,162,258,51,805,201,598,178,97,34,63,44,
126,10,39,542,77,27,214,119,202,174,105,315,23,459,228,238,347,170,174,84)
skript.p.166<-c(40,37,41,40,43,37,38,40,42,43,39,40,39,40,42,38,
        41,41,39,38,42,40,41,39,37,40,41,40,39,40,41,42)

#:10


#11:
jitterplot<-function(x,xlim){
        x<-unlist(x)
        set.seed(13)
        zz<-runif(length(x))
        if(missing(xlim)) xlim<-range(pretty(x))
        plot(x,zz,ylab="",xlim=xlim)
}

#:11

#12:
stabdiagramm<-function(x,xlim){
    if(missing(xlim)||length(xlim)!=2) xlim<-range(pretty(x)) #R
    if(0==diff(xlim)) xlim<-xlim+c(-1,1) #R
    counts<-table(x)
    werte<-as.numeric(names(counts))
    plot(c(min(werte),max(werte)),c(0,max(counts)),xlim=xlim,
         type="n",xlab="x",ylab=paste("*1/",length(x),sep=""))
    segments(werte,0,werte,counts)
}

#:12

#13:
balkendiagramm<-function(x,breaks,...){
  barplot(table(cut(x,breaks=breaks)),horiz=T,...)
}

#:13

#14:
slider<-function(refresh.code,names,minima,maxima,resolutions,starts,title="Steuerung",no=0,
# slider version pw041030
   set.no.value=0){
   if(no!=0) return(as.numeric(tclvalue(get(paste("slider",no,sep=""),env=slider.env))))
   if(set.no.value[1]!=0){ try(eval(parse(text=paste("tclvalue(slider",set.no.value[1],")<-",
            set.no.value[2],sep="")),env=slider.env)); return(set.no.value[2]) }
   if(!exists("slider.env")) slider.env<<-new.env()
   require(tcltk); nt<-tktoplevel(); tkwm.title(nt,title); tkwm.geometry(nt,"+0+0")
   for(i in seq(names))
      eval(parse(text=paste("assign(\"slider",i,"\",tclVar(starts[i]),env=slider.env)",sep="")))
   for(i in seq(names)){
      tkpack(fr<-tkframe(nt));  lab<-tklabel(fr, text=names[i], width="25")
      sc<-tkscale(fr, command=refresh.code, from=minima[i], to=maxima[i],
                     showvalue=T, resolution=resolutions[i], orient="horiz")
      assign("sc",sc,env=slider.env); tkpack(lab,sc,side="right")
      eval(parse(text=paste("tkconfigure(sc,variable=slider",i,")",sep="")),env=slider.env)
   }
   tkpack(fr<-tkframe(nt),fill="x")
   tkpack(tkbutton(fr, text="Exit", command=function()tkdestroy(nt)),side="right")
   tkpack(tkbutton(fr, text="Reset", command=function(){
      for(i in seq(starts)) eval(parse(text=paste("tclvalue(slider",i,")<-",starts[i],sep="")),env=slider.env)
      refresh.code()    }  ),side="left")
   invisible(nt)
}
slider<-slider2<-function(sl.functions,sl.names,sl.mins,sl.maxs,sl.deltas,sl.defaults,
                  but.functions,but.names, no,set.no.value,obj.name,obj.value,
                  reset.function,title,DEBUG=F){
# slider2, pw 050107
  if(!missing(no)) return(as.numeric(tclvalue(get(paste("slider",no,sep=""),env=slider.env))))
  if(!missing(set.no.value)){ try(eval(parse(text=paste("tclvalue(slider",set.no.value[1],")<-",
                            set.no.value[2],sep="")),env=slider.env)); return(set.no.value[2]) }
  if(!exists("slider.env")) slider.env<<-new.env()
  if(!missing(obj.name)){
    if(!missing(obj.value)) assign(obj.name,obj.value,env=slider.env) else
      obj.value<-get(obj.name,env=slider.env)
    return(obj.value)
  }
  if(missing(title)) title<-"slider control widget"
  require(tcltk); nt<-tktoplevel(); tkwm.title(nt,title); tkwm.geometry(nt,"+0+0")
  if(missing(sl.names)) sl.names<-NULL
  if(missing(sl.functions)) sl.functions<-function(...){}
  for(i in seq(sl.names)){
    eval(parse(text=paste("assign('slider",i,"',tclVar(sl.defaults[i]),env=slider.env)",sep="")))
    tkpack(fr<-tkframe(nt));  lab<-tklabel(fr, text=sl.names[i], width="25")
    sc<-tkscale(fr,from=sl.mins[i],to=sl.maxs[i],showvalue=T,resolution=sl.deltas[i],orient="horiz")
    tkpack(lab,sc,side="right"); assign("sc",sc,env=slider.env)
    eval(parse(text=paste("tkconfigure(sc,variable=slider",i,")",sep="")),env=slider.env)
    sl.fun<-if(length(sl.functions)>1) sl.functions[[i]] else sl.functions
    if(!is.function(sl.fun)) sl.fun<-eval(parse(text=paste("function(...){",sl.fun,"}")))
    tkconfigure(sc,command=sl.fun); if(DEBUG) cat("slider",i,"eingerichtet")
  }
  assign("slider.values.old",sl.defaults,env=slider.env)
  tkpack(f.but<-tkframe(nt),fill="x")
  tkpack(tkbutton(f.but, text="Exit", command=function()tkdestroy(nt)),side="right")
  if(missing(reset.function)) reset.function<-function(...) print("relax")
  if(!is.function(reset.function))
    reset.function<-eval(parse(text=paste("function(...){",reset.function,"}")))
  tkpack(tkbutton(f.but, text="Reset", command=function(){
         for(i in seq(sl.names))
            eval(parse(text=paste("tclvalue(slider",i,")<-",sl.defaults[i],sep="")),env=slider.env)
         reset.function()  }  ),side="right")
  if(missing(but.names)) but.names<-NULL
  for(i in seq(but.names)){
    but.fun<-if(length(but.functions)>1) but.functions[[i]] else but.functions
    if(!is.function(but.fun))but.fun<-
       eval(parse(text=paste("function(...){",but.fun,"}")))
    tkpack(tkbutton(f.but, text=but.names[i], command=but.fun),side="left")
    cat("button",i,"eingerichtet")
  }
  invisible(nt)
}

dichtespur.interaktiv<-function(x){
  if (any(x <= 0)) {
    x <- x - min(x) + 1e-04 * diff(range(x))
    print("WARNUNG: x Werte wurden verschoben, da z.T. <=0!")
  }
  jittervalues<-runif(length(x))
  refresh.fns<-function(...){
# Parameter holen
    lambda<-slider(no=1); rel.width<-slider(no=2)
# Umsetzung
    xx<-if(lambda!=0) (x^lambda-1)/lambda else log(x)
    h<-density(xx,width=rel.width*(max(xx)-min(xx)),n=200)
    par(mfrow=2:1)
    op<-par(mfrow=2:1,xaxs="i")
    plot(h$x, h$y, type="l",bty="n",xlab="x",ylab="y"); abline(h=0)
    xlim<-par()$usr[1:2]
    boxplot(xx, horizontal=TRUE,xlab="x",ylim=xlim,axes=F)
    points(xx,1.3+0.15*jittervalues)
    axis(1)
    par(op)
  }
  slider(refresh.fns,c("lambda: Box-Cox-Parameter","relative Breite"),
         c(-0.5,0.01),c(8,1),c(.1,.01),c(1,0.2))
}

#:14

#15:
stem.leaf <- function(data, unit, m, Min, Max, rule.line=c("Dixon", "Velleman", "Sturges"),
     style=c("Tukey", "bare"), trim.outliers=TRUE, depths=TRUE, reverse.negative.leaves=TRUE){
#Author:  Peter Wolf 05/2003  (modified slightly by J. Fox, 20 July 03)

#4:
rule.line <- match.arg(rule.line)
style <- match.arg(style)

#:4


#29:
debug.show<-function(name){
  if(!exists("debug.cond")) return()
  if(debug.cond=="all"|| (name %in% debug.cond) ){
    cat(name,":\n"); obj<-eval(parse(text=name))
    if(is.vector(obj)){ print(obj) }
    return()
  }
}

#:29


#1:
##################################################################
#Description:                                                    #
#   stem.leaf  produces a stem-and-leaf-display of a data set    #
#                                                                #
#Usage:                                                          #
#   stem.leaf(data)                                              #
#   stem.leaf(data,unit=100,m=5,Min=50,Max=1000,rule.line="Dixon"#
#                                                                #
#Arguments:                                                      #
#   data:      vector of input data                              #
#   unit:      unit of leafs in:  { ...,100,10,1,.1,.01,... }    #
#   m:         1, 2 or 5 -- 10/m=number of possible leaf digits  #
#   Min:       minimum of stem                                   #
#   Max:       maximum of stem                                   #
#   rule.line:   = "Dixon"    => number of lines <- 10*log(n,10) #
#                = "Velleman" => number of lines <- 2*sqrt(n)    #
#                = "Sturges"  => number of lines <- 1 + log(n,2) #
#   style:       = "Tukey"    => Tukey-like stem ( m = 2, 5 )    #
#   trim.outliers=TRUE        => outliers are printed absent     #
#   depths       =TRUE        => depths info is printed          #
#   reverse.negative.leaves=TRUE => neg.leaves are rev. sorted   #
#Author:                                                         #
#   Peter Wolf 05/2003 (modified slightly by J. Fox, 20 July 03) #
##################################################################

#:1


#3:

#5:
n<-length(data<-sort(data))
row.max <- floor(  c(Dixon   =10*log(n,10),
                     Velleman=2*sqrt(n),
                     Sturges =1+log(n,2)        ))[rule.line]

#:5


#6:
stats<-boxplot(data,plot=F)
if(missing(Min)) Min <- if (trim.outliers) stats$stats[1,1] else min(data, na.rm=TRUE)
if(missing(Max)) Max <- if (trim.outliers) stats$stats[5,1] else max(data, na.rm=TRUE)
spannweite.red<-Max - Min

#:6


#8:
zeilen.intervall.laenge<-spannweite.red / row.max
if(missing(unit)){
       factor <- 10^ceiling(log(zeilen.intervall.laenge,10))
} else factor <- 10^round(log(unit*10,10))
debug.show("factor")

#:8


#9:
z<-zeilen.intervall.laenge/factor  # z in (0.1 ,1]
delta.tick<-c(.2,.2,.5,1)[sum(z>c(0,.1,.2,.5))]

#:9


#10:
if(missing(m)) m<-round(1/delta.tick) else delta.tick<-1/m
debug.show("delta.tick"); debug.show("m")

#:10


#11:
data.tr<-data/factor
Min.tr <- Min/factor
Max.tr <- Max/factor

#:11


#12:
spannweite.red<-Max.tr - Min.tr
sk.min<-  floor(Min.tr)
sk.max<-ceiling(Max.tr)
skala <- seq(sk.min,sk.max,by=delta.tick)
if(sk.min<0) skala<-c(sk.min-delta.tick,skala)
if(sk.max<0) skala<-skala[-length(skala)]
debug.show("skala")

#:12


#:3


#13:

#14:
lo.limit <- if (trim.outliers) skala[1] else -Inf
lo.log   <- if(skala[1   ] <  0) data.tr <= lo.limit else data.tr <  lo.limit
n.sk <- length(skala)
hi.limit <- if (trim.outliers) skala[n.sk] + delta.tick else Inf
hi.log   <- if(skala[n.sk] >= 0) data.tr >= hi.limit else data.tr >  hi.limit

n.lower.extr.values <- sum(lo.log); n.upper.extr.values <- sum(hi.log)
if(0<n.lower.extr.values){
  lower.line<- paste("LO:", paste(data[lo.log],collapse=" "))
}
if(0<n.upper.extr.values){
  upper.line<- paste("HI:", paste(data[hi.log],collapse=" "))
}
data.tr.red <-data.tr[(!lo.log)&(!hi.log)]


#:14


#15:
#16:
stem <- ifelse(data.tr.red<0, ceiling(data.tr.red), floor(data.tr.red) )
leaf <- floor(abs(data.tr.red*10-stem*10))
debug.show("leaf"); debug.show("stem")

#:16


#17:
class.of.data.tr<-unlist(c(
   sapply(data.tr.red[data.tr.red< 0],
          function(x,sk)length(sk)-sum(-sk<=-x),skala)
  ,sapply(data.tr.red[data.tr.red>=0],
          function(x,sk)           sum( sk<= x),skala)
))
debug.show("class.of.data.tr")

class.of.data.tr  <- c(1:length(skala),class.of.data.tr)
leaf.grouped      <- split(c(rep(-1,length(skala)),leaf),class.of.data.tr)
leaf.grouped      <- lapply(leaf.grouped, function(x){ sort(x[-1]) })
# debug.show("leaf.grouped")

#:17


#18:
leaf.grouped.ch <- paste("|",unlist(lapply(leaf.grouped,paste,collapse="")))
# debug.show("leaf.grouped")

#:18


#19:

#20:
class.negative <- skala < 0
class.neg.zero <- floor(skala) == -1

#:20


#21:
if (reverse.negative.leaves){
        for (i in seq(class.negative))
            if (class.negative[i]) leaf.grouped[[i]] <- rev(leaf.grouped[[i]])
}

#:21


#22:
line.names <- skala
line.names[class.negative] <- line.names[class.negative]+1
line.names <- as.character(floor(line.names))
line.names[class.neg.zero] <- "-0"


#:22


#23:
if(style=="Tukey"){
  switch(as.character(m),
  "1"={},
  "2"={
        h<-round(2*(skala%%1)) #; line.names[h!=0] <- ""
        line.names<-paste(line.names,
                ifelse(skala<0,c(".","*")[1+h],c("*",".")[1+h]),sep="")
      },
  "5"={
        h<-round(5*(skala%%1)); line.names[h>0 & h<4] <- ""
        line.names<-paste(line.names, ifelse(skala<0,
                         c(".","s","f","t","*")[1+h],
                         c("*","t","f","s",".")[1+h]), sep="")
      }
  )
}

#24:
ragged.left<-function(ch.lines){
  max.n <-max(n.lines<-nchar(ch.lines))
  h     <-paste(rep(" ",max.n),collapse="")
  ch.lines <-paste( substring(h,1,1+max.n-n.lines), ch.lines)
  ch.lines
}

#:24

line.names <- ragged.left(line.names)

#:23


#:19


#25:
n.class<-unlist(lapply(leaf.grouped,length))
select <- (cumsum(n.class) > 0) & rev((cumsum(rev(n.class)) > 0))
depth    <-    cumsum(n.class)          + n.lower.extr.values
depth.rev<-rev(cumsum(rev(n.class))     + n.upper.extr.values)
debug.show("depth")

uplow<-depth>=depth.rev
pos.median<-which(uplow)[1] + (-1:0)
h <- abs(depth[pos.median]-depth.rev[pos.median])
pos.median<-pos.median[1]+(h[1]>h[2])
debug.show("pos.median")

depth[uplow]<-depth.rev[uplow]
depth<-paste(depth,"")
depth[pos.median]<-paste("(",n.class[pos.median],")",sep="")
depth[n.class==0]<-" "
depth <- if (depths) ragged.left(depth) else ""

#:25




#:15


#26:
info<-     c(  paste("1 | 2: represents",1.2*factor),
#  paste("    m:",m     ),
               paste(" leaf unit:",factor/10),
               paste("            n:",n     ))

#:26


#:13


#27:
stem <- paste(depth, line.names, leaf.grouped.ch)
stem <- if((m!=5)||sum(select)>4) stem[select] else stem
result<-list( stem=stem)
if(exists("lower.line")) result<-c(lower=lower.line,result)
if(exists("upper.line")) result<-c(result,upper=upper.line)
result<-c(list( info=info), result)
# for(i in seq(result)) cat(result[[i]],sep="\n")
cat(unlist(result),sep="\n")
invisible(result)

#:27

}

#:2

# stem.leaf -- end
###############################

#:15

#17:
F.dach<-function(xy,breaks,xlim,...){
  
#16:
F.dach.local<-function(x,breaks,xlim,...){
    if(is.null(breaks)){
      if(missing(xlim)||length(xlim)!=2) xlim<-range(pretty(x)) #R
      if(0==diff(xlim)) xlim<-xlim+c(-1,1) #R
        x<-sort(x)
        n<-length(x)
        F.x<-(1:n)/n
        plot(0:1,0:1,type="n",xlim=xlim,xlab="x",ylab="F.dach")
        segments(c(x[-n],x[1],x[n]),      c(F.x[-n],0:1),
                 c(x[-1],par()$usr[1:2]), c(F.x[-n],0:1),...)
        points(unique(x),cumsum(table(x))/length(x),pch=4)
    } else {
        breaks<-sort(breaks)
        if(max(x)>breaks[length(breaks)]) breaks<-c(breaks,max(x))
        if(min(x)<=breaks[1])
          breaks<-c(min(x)-0.001*(max(x)-min(x)),breaks)
        breaks<-unique(breaks)
        counts<-table(cut(x,breaks))
        F.x<-cumsum(counts)/length(x)
    if(missing(xlim)||length(xlim)!=2) xlim<-range(pretty(breaks)) #R
    if(0==diff(xlim)) xlim<-xlim+c(-1,1) #R
        plot(c(min(x),max(x)),0:1,type="n",xlim=xlim,xlab="x",ylab="F.dach")
        lines(breaks,c(0,F.x),...)
    }
}

#:16

  if(is.matrix(xy))     xy<-split(xy,col(xy))
  if(!is.list(xy)) xy<-list(xy) #R
  if(missing(breaks))   breaks<-NULL
    if(missing(xlim)||length(xlim)!=2) xlim<-range(pretty(unlist(xy))) #R
    if(0==diff(xlim)) xlim<-xlim+c(-1,1) #R
  i<- 0
  oldpar<-par()$lty
  for(el in xy){
        if (length(breaks) != 0 && (max(breaks) < max(el) ||   #R
            min(breaks) > min(el))) {             #R
            breaks <- sort(c(min(el), breaks, max(el))) #R
                print("Warnung: Klassengrenzen zu eng!->wurden angepasst!")#R
        } #R                                                #R
    F.dach.local(el, breaks=breaks, xlim=xlim, lty=i<-i+1, ...)
    par(new=T)
  }
  par(lty=oldpar); par(new=F)
  if(i>1){
       namen<-names(xy)
       if(is.null(namen)) namen<-as.character(1:length(xy))
       legend(.3*xlim[1]+.7*xlim[2],.7,namen,lty=1:i)
  }
}

#:17

#18:
F.dach.look.up<-function(x){
#print("ACHTUNG: bitte zweimal Punkt im F.dach-Plot anklicken!!!!")
   readline("ACHTUNG: bitte zweimal Punkt im F.dach-Plot anklicken!!!! -- RETURN")
   h<-function(x){
      xy<-unlist(locator(n=1))
      p1<-xy[2]; x1<-xy[1]
      p <-sum(x<=x1)/length(x)
      if(p>=p1){ p1<-p } else {
        x1<-sort(x)[max(1,ceiling(p1*length(x)))]
        p1<-sum(x<=x1)/length(x)
      }
      lines(c(par()$usr[1],x1,x1),c(p1,p1,par()$usr[3]))
      return(c(x1,p1))
   }
   xy<-rbind(h(x),h(x))
   dimnames(xy)<-NULL
   if(xy[1,1]>xy[2,1]) xy<-xy[2:1,]
   result<-c("x1"                   =  xy[1,1],
             "F.dach(x1)"           =  xy[1,2],
             "1-F.dach(x1)"         =1-xy[1,2],
             "x2"                   =  xy[2,1],
             "F.dach(x2)"           =  xy[2,2],
             "1-F.dach(x2)"         =1-xy[2,2],
             "F.dach(x2)-F.dach(x1)"=xy[2,2]-xy[1,2])
   result
}

#:18

#19:
scatter<-function(xy,xlim,ylim,hull=0,...){
  if(is.matrix(xy))     xy<-split(xy,col(xy))
  if(!is.list(xy)) xy<-list(xy) #R
    if(missing(xlim)||length(xlim)!=2) xlim<-range(pretty(unlist(xy[1]))) #R
    if(0==diff(xlim)) xlim<-xlim+c(-1,1) #R
    if(missing(ylim)||length(ylim)!=2) ylim<-range(pretty(unlist(xy[2]))) #R
    if(0==diff(ylim)) ylim<-ylim+c(-1,1) #R
  namen<-names(xy)[1:2]
  xy<-list(as.vector(xy[[1]]),as.vector(xy[[2]]))  #R
  if(is.null(namen)) namen<-c("x","y")
  if(length(xy[[1]])!=length(xy[[2]])){ #R
    print("WARNUNG: Laengen von x und y unterschiedlich!")   #R
    n<-min(length(xy[[1]]),length(xy[[2]]))                  #R
    xy[[1]]<-xy[[1]][1:n]; xy[[2]]<-xy[[2]][1:n]             #R
  }  #R
  plot(xy[[1]],xy[[2]],xlim=xlim,ylim=ylim,xlab=namen[1],ylab=namen[2],...)
  if(hull>0){
# definition of local hull-function
HULL <- function(xy, anz.hull=0){
hull.local<-function(xy,uniq=T,graph=F,newplot=F){
n<-dim(xy)[1]
if(3>=n) {if(n==0) return(list(xy,NULL)) else return(list(xy,1:n)) }
xy.in<-xy
eps<-.0001*abs(diff(range(xy[,1])))
xy<-xy[order(xy[,2]),]
xy<-xy[order(xy[,1]),]
if(uniq==F){
  h<-!((0==diff(xy[,1])) & (0==diff(xy[,2])))
  xy<-xy[c(T,h),]
  n<-dim(xy)[1]
}
  if(newplot)plot(xy)
xyh<-xy
index.xmin<-(1:n)[xy[,1]==min(xy[,1])]
if(length(index.xmin)>1){
  h<-xy[index.xmin,2]
  index.xmin<-index.xmin[h==min(h)]
}
pktu<-start.pkt<-xy[index.xmin,]
index.xmax<-(1:n)[xy[,1]==max(xy[,1])]
if(length(index.xmax)>1){
  h<-xy[index.xmax,2]
  index.xmax<-index.xmax[h==max(h)]
}
pkto<-end.pkt<-xy[index.xmax,]
xyh<-xyh[-index.xmin,,drop=F]
chull<-matrix(start.pkt,1,2)
  repeat{
dy.durch.dx<-(xyh[,2]-pktu[2])/pmax(eps,xyh[,1]-pktu[1])
new<-dy.durch.dx==min(dy.durch.dx)
if(sum(new)>1) new<-new&(1==cumsum(new))
pktu<-xyh[new,]
h<-xyh[,1]<pktu[1] | new
xyh<-xyh[!h,,drop=F]
chull<-rbind(chull,pktu)
    if(graph) points(pktu[1],pktu[2],col=2)
if(all(pktu==end.pkt)) break
  }
xyh<-xy
xyh<-xyh[-index.xmax,,drop=F]
  repeat{
    xybak<-xyh; pktbak<-pkto
dy.durch.dx<-(pkto[2]-xyh[,2])/pmax(eps,pkto[1]-xyh[,1])
new<-dy.durch.dx==min(dy.durch.dx)
if(sum(new)>1) new<-new&(1==rev(cumsum(rev(new))))
pkto<-xyh[new,]
h<-xyh[,1]>pkto[1] | new
xyh<-xyh[!h,,drop=F]
    if(graph)points(pkto[1],pkto[2],col=2)
if(all(pkto==start.pkt)) break
chull<-rbind(chull,pkto)
  }
  index.of.points<-match(sin(chull[,1])+cos(chull[,2]),
                         sin(xy.in[,1])+cos(xy.in[,2]))
  return(list(chull,index.of.points))
}
    old <- par()$lty
    anz<-1
    repeat{
      if(length(xy[[1]])<3) break
      if(anz.hull<anz)break
      anz<-anz+1
      h<-hull.local(cbind(xy[[1]],xy[[2]]),F)
      polygon(h[[1]][,1], h[[1]][,2], density = 0, lty = anz)
      xy[[1]]<-xy[[1]][-h[[2]]]
      xy[[2]]<-xy[[2]][-h[[2]]]
    }
    par(lty = old)
}

      HULL(xy[1:2],hull)
  }
}

#:19

#20:
dichtespur<-function(xy,xlim,width,...){
  if(is.matrix(xy))     xy<-split(xy,col(xy))
  if(!is.list(xy)) xy<-list(xy) #R
    if(missing(xlim)||length(xlim)!=2) xlim<-range(pretty(unlist(xy))) #R
    if(0==diff(xlim)) xlim<-xlim+c(-1,1) #R
  if(missing(width)){
       print(paste("der Bereich der x-Achse beginnt bei:",xlim[1]))
       print(paste("und endet bei:",xlim[2]))
       print("geben Sie die Fensterweite an:")
       width<-c(scan(,0,n=1),0.1*(xlim[2]-xlim[1]))[1]                       #R
  }
  h<-NULL; ymax<-0
  for(el in xy){
       hh<-density(el,width=width,n=100,window="g")
       .l<-hh$x>=xlim[1] & hh$x<=xlim[2]
       hh$x<-hh$x[.l];hh$y<-hh$y[.l]
       h <-c(h,list(hh))
       ymax<-max(ymax,hh$y)
  }
  plot(0:1,0:1,type="n",xlim=xlim,ylim=c(0,ymax),xlab="x",ylab="f.dach")
  oldpar<-par()$lty; i<- 0
  for(el in h){ lines(el$x,el$y,lty=i<-i+1) }
  par(lty=oldpar)
  if(i>1){
       namen<-names(xy)
       if(is.null(namen)) namen<-as.character(1:length(xy))
       legend(.3*xlim[1]+.7*xlim[2],.7*ymax,namen,lty=1:i)
  }
}


#:20

#21:
histogramm<-function(xy,xlim,breaks,nclass ){
    if(missing(xlim)||length(xlim)!=2)                                       #R
                      xlim<-range(pretty(c(min(unlist(xy)),max(unlist(xy)))))#R
    if(0==diff(xlim)) xlim<-xlim+c(-1,1) #R
   if(missing(breaks)){
       if(missing(nclass)) nclass <- log(length(unlist(xy)), base = 2) + 1
       nclass<-ceiling(nclass)
       breaks<-xlim[1]+(0:nclass)/nclass*(xlim[2]-xlim[1])
   }
   if(is.list(xy)){
       OLDPAR<-par(no.readonly=TRUE) #R
       par(mfrow=c(length(xy),1))
       for(i in 1:length(xy)){
           if(length(breaks)==0|| #R
              max(breaks)<max(xy[[i]])||min(breaks)>min(xy[[i]])){ #R
                print("Warnung: Klassengrenzen zu eng!->wurden angepasst!")#R
                breaks<-pretty(xy[[i]])                               #R
           }                                                   #R
           hist(xy[[i]], breaks=breaks, xlim=xlim, probability=T,
                   xlab=getnames(xy)[i],ylab="f.dach",main="")
        }
       par(OLDPAR)
   } else{
           if(length(breaks)==0|| #R
              max(breaks)<max(xy)||min(breaks)>min(xy)){ #R
                print("Warnung: Klassengrenzen zu eng!->wurden angepasst!")#R
                breaks<-pretty(xy)                               #R
           }                                                   #R
          hist(xy,xlim=xlim,breaks=breaks,probability=T,  #R
               main="",xlab="x",ylab="f.dach") #R
   }
}

histogramm<-function(xy,xlim,breaks,nclass ){
    if(missing(xlim)||length(xlim)!=2)                                       #R
                      xlim<-range(pretty(c(min(unlist(xy)),max(unlist(xy)))))#R
    if(0==diff(xlim)) xlim<-xlim+c(-1,1) #R
   if(missing(breaks)){
       if(missing(nclass)) nclass <- log(length(unlist(xy)), base = 2) + 1
       nclass<-ceiling(nclass)
       breaks<-xlim[1]+(0:nclass)/nclass*(xlim[2]-xlim[1])
   }
   if(is.list(xy)){
       OLDPAR<-par(no.readonly=TRUE) #R
       par(mfrow=c(length(xy),1))
       for(i in 1:length(xy)){
           if(length(breaks)==0|| #R
              max(breaks)<max(xy[[i]])||min(breaks)>min(xy[[i]])){ #R
                print("Warnung: Klassengrenzen zu eng!->wurden angepasst!")#R
                breaks<-pretty(xy[[i]])                               #R
           }                                                   #R
           hist(xy[[i]], breaks=breaks, xlim=xlim, probability=T,
                   xlab=getnames(xy)[i],ylab="f.dach",main="")
        }
       par(OLDPAR)
   } else{
           if(length(breaks)==0|| #R
              max(breaks)<max(xy)||min(breaks)>min(xy)){ #R
                print("Warnung: Klassengrenzen zu eng!->wurden angepasst!")#R
                breaks<-pretty(xy)                               #R
           }                                                   #R
          hist(xy,xlim=xlim,breaks=breaks,probability=T,  #R
               main="",xlab="x",ylab="f.dach") #R
   }
}

#:21

#22:
qqpairsplot<-function(xy){
       OLDPAR<-par(no.readonly=TRUE) #R
   par(mfrow=rep(length(xy),2))
   for(i in 1:length(xy))
      for(j in 1:length(xy)){
         qqplot(xy[[i]],xy[[j]], xlab=getnames(xy)[i], ylab=getnames(xy)[j])
         abline(0,1)
      }
   par(OLDPAR)
}

#:22

#23:
summary.stats<-function(xy,xlim,...){
  l.summary<-function(x){
        options(digits=7)
        h<-c(summary(x),"Std.Dev."=var(x)^0.5,n=length(x))
        options(digits=5)
        return(h)
  }
  namen<-getnames(xy)
  if(is.matrix(xy)){
        xy<-split(xy,col(xy))
        names(xy)<-namen
  }
   if(!is.list(xy)) return(l.summary(xy)) else return(lapply(xy,l.summary)) #R
}

#:23

#24:
box.cox.transformation<-function(xy,lambda){
   if(is.list(xy))    n<-length(xy)  else n<-1
   if(is.matrix(xy))  n<-dim(xy)[2]
   if(missing(lambda)){
      if(n>1){
          print("Mit welchen lambdas sollen die Werte der Komponenten")
          print(getnames(xy))
          print("transformiert werden?")
          print(paste("bitte",n,"lambdas eingeben"))
      } else {
          print("Mit welchem lambda sollen die Werte von")
          print(getnames(xy))
          print("transformiert werden?")
      }
      lam<-c(scan(,0,n=n),rep(1,n))[1:n]                                     #R
   } else {   lam<-lambda }
   if(is.null(lam))lam<-1
   if(length(lam)<n) lam<-as.vector(matrix(lam,n,1))
   if(is.list(xy))
      for(i in 1:n)
         xy[[i]]<-if(lam[i]==0){log(xy[[i]])}else{(xy[[i]]^lam[i]-1)/lam[i]}
   if(is.matrix(xy))
      for(i in 1:n)
         xy[[,i]]<-if(lam[i]==0){log(xy[[,i]])}else{(xy[[,i]]^lam[i]-1)/lam[i]}
   if(!(is.matrix(xy)|is.list(xy)))
         xy<-if(lam==0){log(xy)}else{(xy^lam-1)/lam}
   return(xy)
}


#:24

#25:
remove.extreme.values<-function(xy){
   xy.is.list<-is.list(xy)
   xy.is.matrix<-is.matrix(xy)
   if(xy.is.matrix){xy.dim<-dim(xy); xy.names<-names(xy)}
   bak<-xy
   if(xy.is.list){
      for(i in 1:length(xy)){
         print(paste("Komponente: ",getnames(xy)[i]))
         print(paste("Die Werte der",i,"-ten Komponente liegen in"))
         print(range(xy[[i]]))
         print("Bis zu welcher Untergrenze sollen Werte von der")
         print(paste(i,"-ten Komponente entfernt werden?"))
         ug<-c(scan(,0,n=1),min(xy[[i]]))[1]                                 #R
         print("Ab welcher Obergrenze sollen Werte von der")
         print(paste(i,"-ten Komponente entfernt werden?"))
         og<-c(scan(,0,n=1),max(xy[[i]]))[1]                                 #R
         h<-xy[[i]][ug<=xy[[i]]&xy[[i]]<=og]
         if(length(h)==0){
            cat("ERROR: Sie haetten alle Werte entfernt! Uebergangen!\n")
            next
         } else xy[[i]]<-h
      }
   } else {
      print(paste("Die Werte liegen in"))
      print(range(xy))
      print("Bis zu welcher Untergrenze sollen Werte")
      print("entfernt werden?")
      ug<-c(scan(,0,n=1),min(xy))[1]                                         #R
      print("Ab welcher Obergrenze sollen Werte")
      print("entfernt werden?")
      og<-c(scan(,0,n=1),max(xy))[1]                                         #R
      if(xy.is.matrix){
         h<-xy[apply(xy<=ug,1,"|")&apply(xy<=og,1,"|"),]
      } else {
         h<-xy[ug<=xy&xy<=og]
      }
      if(length(h)==0){
         cat("ERROR: Sie haetten alle Werte entfernt! Abbruch\n")
         return(xy)
      } else xy<-h
   }
   xy
}

#:25

#26:
limit.values<-function(xy){
   xy.is.matrix<-is.matrix(xy)
   if(xy.is.matrix){xy.dim<-dim(xy); xy.names<-names(xy)}
   xy.is.list<-is.list(xy)
   if(xy.is.list){
      for(i in 1:length(xy)){
         print(paste("Komponente: ",getnames(xy)[i]))
         print(paste("Die Werte der",i,"-ten Komponente liegen in"))
         print(range(xy[[i]]))
         print("Bis zu welcher Untergrenze sollen KLEINE Werte von der")
         print(paste(i,"-ten Komponente angehoben werden?"))
         ug<-c(scan(,0,n=1),min(xy[[i]]))[1]                                 #R
         print("Bis zu welcher Obergrenze sollen GROSSE Werte gesenkt werden?")
         og<-c(scan(,0,n=1),max(xy[[i]]))[1]                                 #R
         xy[[i]]<-pmin(og,pmax(ug,xy[[i]]))
      }
   } else {
      print(paste("Die Werte liegen in"))
      print(range(xy))
      print("Bis zu welcher Untergrenze sollen KLEINE Werte angehoben werden?")
      ug<-c(scan(,0,n=1),min(xy))[1]                                         #R
      print("Bis zu welcher Obergrenze sollen GROSSE Werte gesenkt werden?")
      og<-c(scan(,0,n=1),max(xy))[1]                                         #R
      xy<-pmin(og,pmax(ug,xy))
      if(xy.is.matrix){dim(xy)<-xy.dim; names(xy)<-xy.names}
   }
   xy
}

#:26

#27:
split.in.eq.classes<-function(xy,anz=4){
   if(missing(anz)){
       print("Auf wie viele gleich grosse Klassen sollen")
       print("die Daten verteilt werden?")
       anz<-c(scan(,0,n=1),4)[1]                                             #R
   }
   xy<-unlist(xy)
   xy<-matrix(xy[1:(floor(length(xy)/anz)*anz)],ncol=anz)
   xy<-split(xy,col(xy))
}

#:27

#28:
split.x.by.y<-function(x,y,anz=4){
   if(missing(anz)){
       print("Wie viele Klassen sollen aus der zweiten")
       print("Variablen gebildet werden,")
       print("um danach die erste zu klassifizieren?")
       anz<-c(scan(,0,n=1),4)[1]                                             #R
   }
   h<-quantile(range(y),(1:(anz-1))/anz )
   hh<-rep(1,length(y))
   for(i in h) hh<-hh+(y>i)
   if(length(x)<length(hh)) hh<-hh[1:length(x )]
   if(length(x)>length(hh)) x <-x [1:length(hh)]
   xy<-split(x,hh)
   xy
}

#:28

#29:
bootstrap.experiment<-function(xy,n,ZZ,type){
  if(missing(n)){
     print("Wie gross soll n sein? n=")
     n <-c(scan(,0,n=1),3)[1]                                                #R
  }
  if(missing(ZZ)){
     print("Zufallsgeneratorstart? ZZ=")
     set.seed(ZZ<-c(scan(,0,n=1),13)[1])                                     #R
  }
  if(is.matrix(xy)) xy<-split(xy,col(xy))
  if(!is.list(xy))   xy<-list(xy)
  n.ds<-length(xy)
  stichproben<-NULL
  for(i in 1:n.ds){
     stichproben<-c(stichproben,list(xy[[i]]))
     for(j in 1:n){
        stichproben<-c(stichproben,list(sample(xy[[i]],replace=T)))
     }
  }
  if(missing(type)){
    h<-matrix(as.character(rbind(1:n.ds,matrix(letters[1:n],n,n.ds))),n+1,n.ds)
    boxplot(stichproben, names.x=h) #R
  } else {
     h<-c("median","mean","3. Quartil","1. Quartil", "s","var",
          "Interquartils-Abstand")
     if(type=="?"){
         print("Welche Statistik interessiert Sie?")
         wahl<-menu(h)
     } else {
         wahl<-(1:7)[h==type]
     }
     fkt<-switch(wahl, median, mean, function(x)quantile(x,0.75),
                 function(x)quantile(x,0.25), function(x)var(x)^0.5,
                 var, function(x)quantile(x,0.75)-quantile(x,0.25) )
     result<-unlist(lapply(stichproben, fkt ))
     result<-matrix(result,n+1,n.ds)[-1,]
     boxplot(split(result,col(result)), names.x=as.character(1:n.ds)) #R
  }
  stichproben
}

#:29

#30:
kt.work<-function(xy,is.xy.kt=F){
 
#31:
if(missing(xy)) xy<-cbind(c(1,1,1,1,1,1,2,2,2,2,3,3,3,1,2,1,3,2,1),
                          c(1,2,1,2,2,1,2,1,1,1,1,2,2,2,1,2,1,2,2))
if(!is.xy.kt){
  
#34:
if(is.list(xy)){
  xy<-table(xy[[1]],xy[[2]])
}else{
  if(is.matrix(xy)){
    xy<-table(xy[,1],xy[,2])
  } else { print("ERROR: Input ist keine Datenmatrix");break}
}

#:34

}
kt.abs<-cbind(xy,sum=apply(xy,1,sum))
kt.abs<-rbind(kt.abs,sum=apply(kt.abs,2,sum))
kt.rel<-kt.abs/kt.abs[length(kt.abs)]

#35:
kt.ind.rel<-outer(kt.rel[,ncol(kt.rel)],kt.rel[nrow(kt.rel),])
kt.ind.abs<-kt.ind.rel*kt.abs[length(kt.abs)]

#:35


#36:
h<-kt.ind.abs[-nrow(kt.rel),-ncol(kt.rel)]
chiq<-sum((kt.abs[-nrow(kt.rel),-ncol(kt.rel)]-h)^2/h)
kontingenz.koef<-(chiq/(kt.abs[length(kt.abs)]-chiq))^0.5

#:36


#:31

 repeat{
   
#32:
cat("Auswahl:")
wahl<-menu(c(
             "Tabelle mit Anzahlen ausgeben",
             "Tabelle mit relative Haeufigkeiten ausgeben",
             "Tabelle (absolut) bei Unabhaengigkeit ausgeben",
             "Tabelle (relativ) bei Unabhaengigkeit ausgeben",
             "Kontingenzkoeffizienten berechnen",
             "Zeilenverteilung ausgeben",
             "Spaltenverteilung ausgeben"))

#:32

   
#33:
if(wahl==0)break
abbruch<-FALSE #R
switch(1+wahl,
         abbruch<-TRUE, #R
       {print("Tabelle mit absoluten Haeufigkeiten"); print(kt.abs)},
       {print("Tabelle mit relativen Haeufigkeiten"); print(kt.rel)},
       {print("Tabelle abs. Haeufigkeiten bei Unabhaengigkeit")
        print(kt.ind.abs)},
       {print("Tabelle rel. Haeufigkeiten bei Unabhaengigkeit")
        print(kt.ind.rel)},
       {print("Kontingenzkoeffizient")
        print(kontingenz.koef)
        print("Chisquare-Wert")
        print(chiq)},
       {
        
#37:
print("Welche Zeile?")
i<-scan(,0,n=1)                                                              #R
cat("absolute Haeufigkeiten\n")
print(kt.abs[i,])
cat("relative Haeufigkeiten\n")
print(kt.rel[i,]/kt.rel[i,ncol(kt.rel)])


#:37

       },
       {
        
#38:
print("Welche Spalte?")
j<-scan(,0,n=1)                                                              #R
cat("absolute Haeufigkeiten\n")
print(kt.abs[,j])
cat("relative Haeufigkeiten\n")
print(kt.rel[,j]/kt.rel[nrow(kt.rel),j])

#:38

       }
)
if(abbruch){abbruch<-FALSE;break} #R

#:33

 }
}

#:30

#39:
getnames<-function(xy){
  if(is.list(xy)){
     if(is.null(names(xy))){
        return(as.character(1:length(xy)))
     } else  return(names(xy))
  }
  if(is.matrix(xy)){
     if(is.null(dimnames(xy)[[2]])){
        return(as.character(1:dim(xy)[2]))
     } else {
        return(dimnames(xy)[[2]])
     }
  }
  return("x")
}



#:39

#40:
binomial.calculator<-function(x.F,n,p){
  
#41:
print("binomial.calculator start")
if(missing(n)){
        print("Bitte n eingeben! (Default: n=1) n=?")
        n<-c(scan(,0,n=1),1)[1]                                              #R
}
if(missing(p)){
        print("Bitte p eingeben! (Default: p=0.5) p=?")
        p<-c(scan(,0,n=1),.5)[1]                                             #R
}

#:41

  
#42:
if(missing(x.F)){
   a<-1
   
#43:
if(a==1){ print( c("E(X)"=n*p, "Var(X)"=n*p*(1-p), sigma=(n*p*(1-p))^0.5,
                   "E(X)-2sigma"=n*p-2*(n*p*(1-p))^0.5,
                   "E(X)-sigma"=n*p-  (n*p*(1-p))^0.5,
                   "E(X)+sigma"=n*p+  (n*p*(1-p))^0.5,
                   "E(X)+2sigma"=n*p+2*(n*p*(1-p))^0.5) )
} else {  print( c("E(aX)"=n*p*a, "Var(aX)"=n*p*(1-p)*a^2,
                   sigma=(n*p*(1-p))^0.5*a,
                   "E(aX)-2sigma"=n*p*a-2*(n*p*(1-p))^0.5*a,
                   "E(aX)-sigma"=n*p*a-  (n*p*(1-p))^0.5*a,
                   "E(aX)+sigma"=n*p*a+  (n*p*(1-p))^0.5*a,
                   "E(aX)+2sigma"=n*p*a+2*(n*p*(1-p))^0.5*a) )
}


#:43

} else {
   is.F.x<-T
   if(any(x.F>1)) is.F.x<-F
   if(all(floor(x.F)==x.F)) is.F.x <-F
   if(!is.F.x){
        x<-x.F
        print("Werte der Wahrscheinlichkeitsfunktion:")
        print(cbind(x=x,"f(x)"=dbinom(x,n,p)))
        print("Werte der Verteilungsfunktion:")
        print(cbind(x=x,"F(x)"=pbinom(x,n,p)))
   }
   if(is.F.x){
        print("Quantile:")
        print(cbind("eingegeben:F(x)"=F.x,x=qbinom(F.x,n,p)))
   }
}

#:42

  repeat{
      
#44:
print("Auswahl von binomial.calculator")
auswahl<-c("n eingeben","p eingeben",
           "f(x) und F(x) berechnen","Quantile berechnen",
           "Statistiken von aX berechnen","Plot erstellen")
wahl<-menu(auswahl)

#:44

      
#45:
abbruch<-FALSE #R
switch(1+wahl,
         abbruch<-TRUE, #R
       {
        print("Bitte n eingeben! (Default: n=1) n=?")
        n<-c(scan(,0,n=1),1)[1]                                              #R
       },
       {
        print("Bitte p eingeben! (Default: p=0.5) p=?")
        p<-c(scan(,0,n=1),.5)[1]                                             #R
       },
       {
        print("Bitte x eingeben! x=?")
        x<-scan(,0,n=n+1); if(0==length(x)) x<-0:n                           #R
        print("Werte der Wahrscheinlichkeits- und der Verteilungsfunktion:")
        print(cbind(x=x,"f(x)"=dbinom(x,n,p),"F(x)"=pbinom(x,n,p)))
       },
       {
        print("Bitte Wahrscheinlichkeiten eingeben! F(x)=?")
        F.x<-scan(,0,n=n+1)                                                  #R
        print("Quantile:")
        print(cbind("eingegeben:F(x)"=F.x,x=qbinom(F.x,n,p)))
       },
       {
        print("Um welchen Faktor a soll die Zufallsvariable gestreckt werden?")
        print("(Default: 1)")
        a<-c(scan(,0,n=1),1)[1]                                              #R
        
#43:
if(a==1){ print( c("E(X)"=n*p, "Var(X)"=n*p*(1-p), sigma=(n*p*(1-p))^0.5,
                   "E(X)-2sigma"=n*p-2*(n*p*(1-p))^0.5,
                   "E(X)-sigma"=n*p-  (n*p*(1-p))^0.5,
                   "E(X)+sigma"=n*p+  (n*p*(1-p))^0.5,
                   "E(X)+2sigma"=n*p+2*(n*p*(1-p))^0.5) )
} else {  print( c("E(aX)"=n*p*a, "Var(aX)"=n*p*(1-p)*a^2,
                   sigma=(n*p*(1-p))^0.5*a,
                   "E(aX)-2sigma"=n*p*a-2*(n*p*(1-p))^0.5*a,
                   "E(aX)-sigma"=n*p*a-  (n*p*(1-p))^0.5*a,
                   "E(aX)+sigma"=n*p*a+  (n*p*(1-p))^0.5*a,
                   "E(aX)+2sigma"=n*p*a+2*(n*p*(1-p))^0.5*a) )
}


#:43

       },
       {
        x<-0:n ; F.x<-dbinom(x,n,p)
        h<-F.x>.0001 ; x<-x[h] ; F.x<-F.x[h]
        plot(x,F.x,type="n",xlab="x",ylab="f(x)")
        segments(x,0,x,F.x)
       }
)
if(abbruch){abbruch<-FALSE;break} #R


#:45

  }
}
#:40

#46:
geometric.calculator<-function(x.F,p){
  
#47:
print("geometric.calculator start")
if(missing(p)){
        print("Bitte p eingeben! (Default: p=0.5) p=?")
        p<-c(scan(,0,n=1),.5)[1]                                             #R
}

#:47

  
#48:
if(missing(x.F)){
   
#49:
          q<-1-p
          print( c("E(X)"=q/p, "Var(X)"=q/(p*p), sigma=q^0.5/p,
                   "E(X)-2sigma"=q/p-2*q^0.5/p,
                   "E(X)-sigma"=q/p-  q^0.5/p,
                   "E(X)+sigma"=q/p+  q^0.5/p,
                   "E(X)+2sigma"=q/p+2*q^0.5/p) )

#:49

} else {
   is.F.x<-T
   if(any(x.F>1)) is.F.x<-F
   if(all(floor(x.F)==x.F)) is.F.x <-F
   if(!is.F.x){
        x<-x.F
        print("Werte der Wahrscheinlichkeitsfunktion:")
        print(cbind(x=x,"f(x)"=dgeom(x,p)))
        print("Werte der Verteilungsfunktion:")
        print(cbind(x=x,"F(x)"=pgeom(x,p)))
   }
   if(is.F.x){
        print("Quantile:")
        print(cbind("eingegeben:F(x)"=F.x,x=qgeom(F.x,p)))
   }
}
#:48

  repeat{
      
#50:
print("Auswahl von geometric.calculator")
auswahl<-c("p eingeben",
           "f(x) und F(x) berechnen","Quantile berechnen",
           "Statistiken berechnen","Plot erstellen")
wahl<-menu(auswahl)

#:50

      
#51:
abbruch<-FALSE #R
switch(1+wahl,
         abbruch<-TRUE, #R
       {
        print("Bitte p eingeben! (Default: p=0.5) p=?")
        p<-c(scan(,0,n=1),.5)[1]                                             #R
       },
       {
        print("Bitte x eingeben! x=?")
        n<-(1-p)/p+5*(1-p)^0.5/p
        x<-scan(,0,n=n+1); if(0==length(x)) x<-0:n                           #R
        print("Werte der Wahrscheinlichkeits- und der Verteilungsfunktion:")
        print(cbind(x=x,"f(x)"=dgeom(x,p),"F(x)"=pgeom(x,p)))
       },
       {
        print("Bitte Wahrscheinlichkeiten eingeben! F(x)=?")
        n<-(1-p)/p+3.5*(1-p)^0.5/p
        F.x<-scan(,0,n+1)                                                  #R
        print("Quantile:")
        print(cbind("eingegeben:F(x)"=F.x,x=qgeom(F.x,p)))
       },
       {
        
#49:
          q<-1-p
          print( c("E(X)"=q/p, "Var(X)"=q/(p*p), sigma=q^0.5/p,
                   "E(X)-2sigma"=q/p-2*q^0.5/p,
                   "E(X)-sigma"=q/p-  q^0.5/p,
                   "E(X)+sigma"=q/p+  q^0.5/p,
                   "E(X)+2sigma"=q/p+2*q^0.5/p) )

#:49

       },
       {
        n<-(1-p)/p+5*(1-p)^0.5/p
        x<-0:n ; F.x<-dgeom(x,p)
        h<-F.x>.0001 ; x<-x[h] ; F.x<-F.x[h]
        plot(x,F.x,type="n",xlab="x",ylab="f(x)")
        segments(x,0,x,F.x)
       }
)
if(abbruch){abbruch<-FALSE;break} #R


#:51

  }
}
#:46

#52:
exponential.calculator<-function(x.F,lambda){
  
#53:
print("exponential.calculator start")
if(missing(lambda)){
        print("Bitte lambda eingeben! (Default: lambda=1) lambda=?")
        lambda<-c(scan(,0,n=1),1)[1]                                         #R
}

#:53

  
#54:
if(missing(x.F)){
   
#55:
          print( c("E(X)"=1/lambda,
                   "Var(X)"=1/(lambda*lambda), sigma=1/lambda,
                   "E(X)-2sigma"=1/lambda-2*1/lambda,
                   "E(X)-sigma"=1/lambda-  1/lambda,
                   "E(X)+sigma"=1/lambda+  1/lambda,
                   "E(X)+2sigma"=1/lambda+2*1/lambda) )

#:55

} else {
   is.F.x<-T
   if(any(x.F>1)) is.F.x<-F
   if(all(floor(x.F)==x.F)) is.F.x <-F
   if(!is.F.x){
        x<-x.F
        print("Werte der Dichtefunktion:")
        print(cbind(x=x,"f(x)"=dexp(x,lambda)))
        print("Werte der Verteilungsfunktion:")
        print(cbind(x=x,"F(x)"=pexp(x,lambda)))
   }
   if(is.F.x){
        print("Quantile:")
        print(cbind("eingegeben:F(x)"=F.x,x=qexp(F.x,lambda)))
   }
}

#:54

  repeat{
      
#56:
print("Auswahl von exponential.calculator")
auswahl<-c("lambda eingeben",
           "f(x) und F(x) berechnen","Quantile berechnen",
           "Statistiken berechnen","Plot erstellen")
wahl<-menu(auswahl)

#:56

      
#57:
abbruch<-FALSE #R
switch(1+wahl,
         abbruch<-TRUE, #R
       {
        print("Bitte lambda eingeben! (Default: lambda=1) lambda=?")
        lambda<-c(scan(,0,n=1),1)[1]                                         #R
       },
       {
        print("Bitte x eingeben! x=?")
        x<-scan(,0); if(0==length(x)) x<-(0:20)/20*(3/lambda)                #R
        print("Werte der Dichtefunktion und der Verteilungsfunktion:")
        print(cbind(x=x,"f(x)"=dexp(x,lambda),"F(x)"=pexp(x,lambda)))
       },
       {
        print("Bitte Wahrscheinlichkeiten eingeben! F(x)=?")
        F.x<-scan(,0)                                                        #R
        print("Quantile:")
        print(cbind("eingegeben:F(x)"=F.x,x=qexp(F.x,lambda)))
       },
       {
        
#55:
          print( c("E(X)"=1/lambda,
                   "Var(X)"=1/(lambda*lambda), sigma=1/lambda,
                   "E(X)-2sigma"=1/lambda-2*1/lambda,
                   "E(X)-sigma"=1/lambda-  1/lambda,
                   "E(X)+sigma"=1/lambda+  1/lambda,
                   "E(X)+2sigma"=1/lambda+2*1/lambda) )

#:55

       },
       {
        x<-(1:200)/lambda/50 ; F.x<-dexp(x,lambda)
        h<-F.x>.0001 ; x<-x[h] ; F.x<-F.x[h]
        plot(x,F.x,type="l",xlab="x",ylab="f(x)")
       }
)
if(abbruch){abbruch<-FALSE;break} #R

#:57

  }
}

#:52

#58:
poisson.calculator<-function(x.F,lambda){
  
#59:
print("poisson.calculator start")
if(missing(lambda)){
        print("Bitte lambda eingeben! (Default: lambda=1) lambda=?")
        lambda<-c(scan(,0,n=1),1)[1]                                         #R
}

#:59

  
#60:
if(missing(x.F)){
   
#61:
          print( c("E(X)"=lambda,
                   "Var(X)"=lambda, sigma=lambda^0.5,
                   "E(X)-2sigma"=lambda-2*lambda^0.5,
                   "E(X)-sigma"=lambda-  lambda^0.5,
                   "E(X)+sigma"=lambda+  lambda^0.5,
                   "E(X)+2sigma"=lambda+2*lambda^0.5) )

#:61

} else {
   is.F.x<-T
   if(any(x.F>1)) is.F.x<-F
   if(all(floor(x.F)==x.F)) is.F.x <-F
   if(!is.F.x){
        x<-x.F
        print("Werte der Dichtefunktion:")
        print(cbind(x=x,"f(x)"=dpois(x,lambda)))
        print("Werte der Verteilungsfunktion:")
        print(cbind(x=x,"F(x)"=ppois(x,lambda)))
   }
   if(is.F.x){
        print("Quantile:")
        print(cbind("eingegeben:F(x)"=F.x,x=qpois(F.x,lambda)))
   }
}

#:60

  repeat{
      
#62:
print("Auswahl von poisson.calculator")
auswahl<-c("lambda eingeben",
           "f(x) und F(x) berechnen","Quantile berechnen",
           "Statistiken berechnen","Plot erstellen")
wahl<-menu(auswahl)

#:62

      
#63:
abbruch<-FALSE #R
switch(1+wahl,
         abbruch<-TRUE, #R
       {
        print("Bitte lambda eingeben! (Default: lambda=1) lambda=?")
        lambda<-c(scan(,0,n=1),1)[1]                                         #R
       },
       {
        print("Bitte x eingeben! x=?")
        x<-scan(,0); if(0==length(x)) x<-qpois(.01,lambda):qpois(.99,lambda) #R
        print("Werte der Wahrscheinlichkeits- und der Verteilungsfunktion:")
        print(cbind(x=x,"f(x)"=dpois(x,lambda),"F(x)"=ppois(x,lambda)))
       },
       {
        print("Bitte Wahrscheinlichkeiten eingeben! F(x)=?")
        F.x<-scan(,0)                                                        #R
        print("Quantile:")
        print(cbind("eingegeben:F(x)"=F.x,x=qpois(F.x,lambda)))
       },
       {
        
#61:
          print( c("E(X)"=lambda,
                   "Var(X)"=lambda, sigma=lambda^0.5,
                   "E(X)-2sigma"=lambda-2*lambda^0.5,
                   "E(X)-sigma"=lambda-  lambda^0.5,
                   "E(X)+sigma"=lambda+  lambda^0.5,
                   "E(X)+2sigma"=lambda+2*lambda^0.5) )

#:61

       },
       {
        x<-qpois(.01,lambda):qpois(.99,lambda); F.x<-dpois(x,lambda)
        h<-F.x>.00001 ; x<-x[h] ; F.x<-F.x[h]
        plot(x,F.x,type="n",xlab="x",ylab="f(x)")
        segments(x,F.x,x,0)
       }
)
if(abbruch){abbruch<-FALSE;break} #R

#:63

  }
}

#:58

#64:
normal.calculator<-function(x.F,mu,sigma){
  
#65:
print("normal.calculator start")
if(missing(mu)){
  
#66:
        print("Bitte Mittel eingeben! (Default: mu=0) mu=?")
        mu<-c(scan(,0,n=1),0)[1]                                             #R

#:66

}
if(missing(sigma)){
  
#67:
print("sigma ist festzulegen!")
print("Wenn Sie")
print("  Standardabweichung eingeben wollen, bitte 0 eingeben,")
print("  Varianz            eingeben wollen, bitte 1 eingeben!")
print("  (Default -- leere Eingabe: 0)")
#S h<-c(scan(,0,n=1),0)[1]
h<-c(scan(,0,n=1),0)[1]                                                      #R
if(h!=1){
    print("Bitte STANDARDABWEICHUNG festlegen! (Default: 1) sigma=?")
    sigma<-abs(c(scan(,0,n=1),1)[1])                                         #R
} else {
    print("Bitte VARIANZ festlegen! (Default: 1) sigma^2=?")
    sigma<-abs(c(scan(,0,n=1),1)[1])^0.5                                     #R
}

#:67

}
if(missing(x.F)) x.F<-mu+(-3:3)*sigma

#:65

  
#68:
if(missing(x.F)){
   
#69:
print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma,
                   "E(X)-2sigma"=mu-2*sigma,
                   "E(X)-sigma"=mu-   sigma,
                   "E(X)+sigma"=mu+   sigma,
                   "E(X)+2sigma"=mu+2*sigma) )


#:69

   
#72:
x<-x.F
xmin<-min(-3.5,qnorm(.01,mu,sigma),x)
xmax<-max(3.5,qnorm(.99,mu,sigma),x)
z0<-(x-mu)/sigma
p.z0<-pnorm(z0)
xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150)
xx<-xx[xmin<=xx&xx<=xmax]
Fxx<-pnorm(xx,mu,sigma)
fxx<-dnorm(xx,mu,sigma)
zz<-seq(from=-3,to=3,length=150)
Fzz<-pnorm(zz)
fzz<-dnorm(zz)
fmax<-max(fxx,fzz)

par(mfrow=c(3,2))
# PLOT 1,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(xx,Fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],1,xx[length(xx)],1)
abline(v=x)
title("F(x)")
# PLOT 1,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(xx,fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],0,xx[length(xx)],0)
abline(v=x)
title("f(x)")
# PLOT 2,1
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
h<-xmin<=z0 & z0<=xmax
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 2,2
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 3,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(zz,Fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],1,zz[length(zz)],1)
if(any(h))segments(z0[h],1,z0[h],p.z0[h])
if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h])
title("Verteilungsfunktion von N(0,1)")
# PLOT 3,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(zz,fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],0,zz[length(zz)],0)
if(any(h))abline(v=z0[h])
title("Dichte von N(0,1)")

par(mfrow=c(1,1))

#:72

} else {
   is.F.x<-T
   if(any(x.F>1)) is.F.x<-F
   if(all(floor(x.F)==x.F)) is.F.x <-F
   if(!is.F.x){
        x<-x.F
        print("Werte der Dichtefunktion und der Verteilungsfunktion:")
        print(cbind(x=x,"f(x)"=dnorm(x,mu,sigma),"F(x)"=pnorm(x,mu,sigma)))
   }
   if(is.F.x){
        print("Quantile:")
        print(cbind("F(x)"=x.F,x=qnorm(x.F,mu,sigma)))
   }
}

#:68

  repeat{
      
#70:
print("Auswahl von normal.calculator")
auswahl<-c("Mittel festsetzen","Variabilitaet festlegen",
           "f(x), F(x), (1-F(x)) berechnen","Quantile berechnen",
           "X verschieben", "X skalieren")
wahl<-menu(auswahl)

#:70

      
#71:
abbruch<-FALSE #R
switch(1+wahl,
         abbruch<-TRUE, #R
       {
         
#66:
        print("Bitte Mittel eingeben! (Default: mu=0) mu=?")
        mu<-c(scan(,0,n=1),0)[1]                                             #R

#:66

         
#69:
print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma,
                   "E(X)-2sigma"=mu-2*sigma,
                   "E(X)-sigma"=mu-   sigma,
                   "E(X)+sigma"=mu+   sigma,
                   "E(X)+2sigma"=mu+2*sigma) )


#:69

         
#72:
x<-x.F
xmin<-min(-3.5,qnorm(.01,mu,sigma),x)
xmax<-max(3.5,qnorm(.99,mu,sigma),x)
z0<-(x-mu)/sigma
p.z0<-pnorm(z0)
xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150)
xx<-xx[xmin<=xx&xx<=xmax]
Fxx<-pnorm(xx,mu,sigma)
fxx<-dnorm(xx,mu,sigma)
zz<-seq(from=-3,to=3,length=150)
Fzz<-pnorm(zz)
fzz<-dnorm(zz)
fmax<-max(fxx,fzz)

par(mfrow=c(3,2))
# PLOT 1,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(xx,Fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],1,xx[length(xx)],1)
abline(v=x)
title("F(x)")
# PLOT 1,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(xx,fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],0,xx[length(xx)],0)
abline(v=x)
title("f(x)")
# PLOT 2,1
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
h<-xmin<=z0 & z0<=xmax
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 2,2
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 3,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(zz,Fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],1,zz[length(zz)],1)
if(any(h))segments(z0[h],1,z0[h],p.z0[h])
if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h])
title("Verteilungsfunktion von N(0,1)")
# PLOT 3,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(zz,fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],0,zz[length(zz)],0)
if(any(h))abline(v=z0[h])
title("Dichte von N(0,1)")

par(mfrow=c(1,1))

#:72

       },
       {
         
#67:
print("sigma ist festzulegen!")
print("Wenn Sie")
print("  Standardabweichung eingeben wollen, bitte 0 eingeben,")
print("  Varianz            eingeben wollen, bitte 1 eingeben!")
print("  (Default -- leere Eingabe: 0)")
#S h<-c(scan(,0,n=1),0)[1]
h<-c(scan(,0,n=1),0)[1]                                                      #R
if(h!=1){
    print("Bitte STANDARDABWEICHUNG festlegen! (Default: 1) sigma=?")
    sigma<-abs(c(scan(,0,n=1),1)[1])                                         #R
} else {
    print("Bitte VARIANZ festlegen! (Default: 1) sigma^2=?")
    sigma<-abs(c(scan(,0,n=1),1)[1])^0.5                                     #R
}

#:67

         
#69:
print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma,
                   "E(X)-2sigma"=mu-2*sigma,
                   "E(X)-sigma"=mu-   sigma,
                   "E(X)+sigma"=mu+   sigma,
                   "E(X)+2sigma"=mu+2*sigma) )


#:69

         
#72:
x<-x.F
xmin<-min(-3.5,qnorm(.01,mu,sigma),x)
xmax<-max(3.5,qnorm(.99,mu,sigma),x)
z0<-(x-mu)/sigma
p.z0<-pnorm(z0)
xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150)
xx<-xx[xmin<=xx&xx<=xmax]
Fxx<-pnorm(xx,mu,sigma)
fxx<-dnorm(xx,mu,sigma)
zz<-seq(from=-3,to=3,length=150)
Fzz<-pnorm(zz)
fzz<-dnorm(zz)
fmax<-max(fxx,fzz)

par(mfrow=c(3,2))
# PLOT 1,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(xx,Fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],1,xx[length(xx)],1)
abline(v=x)
title("F(x)")
# PLOT 1,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(xx,fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],0,xx[length(xx)],0)
abline(v=x)
title("f(x)")
# PLOT 2,1
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
h<-xmin<=z0 & z0<=xmax
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 2,2
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 3,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(zz,Fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],1,zz[length(zz)],1)
if(any(h))segments(z0[h],1,z0[h],p.z0[h])
if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h])
title("Verteilungsfunktion von N(0,1)")
# PLOT 3,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(zz,fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],0,zz[length(zz)],0)
if(any(h))abline(v=z0[h])
title("Dichte von N(0,1)")

par(mfrow=c(1,1))

#:72

       },
       {
        print("Bitte x eingeben! x=?")
        x.F<-scan(,0)                                                        #R
        if(0==length(x.F)) x.F<-mu+(-3:3)*sigma
        
#69:
print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma,
                   "E(X)-2sigma"=mu-2*sigma,
                   "E(X)-sigma"=mu-   sigma,
                   "E(X)+sigma"=mu+   sigma,
                   "E(X)+2sigma"=mu+2*sigma) )


#:69

        
#72:
x<-x.F
xmin<-min(-3.5,qnorm(.01,mu,sigma),x)
xmax<-max(3.5,qnorm(.99,mu,sigma),x)
z0<-(x-mu)/sigma
p.z0<-pnorm(z0)
xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150)
xx<-xx[xmin<=xx&xx<=xmax]
Fxx<-pnorm(xx,mu,sigma)
fxx<-dnorm(xx,mu,sigma)
zz<-seq(from=-3,to=3,length=150)
Fzz<-pnorm(zz)
fzz<-dnorm(zz)
fmax<-max(fxx,fzz)

par(mfrow=c(3,2))
# PLOT 1,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(xx,Fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],1,xx[length(xx)],1)
abline(v=x)
title("F(x)")
# PLOT 1,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(xx,fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],0,xx[length(xx)],0)
abline(v=x)
title("f(x)")
# PLOT 2,1
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
h<-xmin<=z0 & z0<=xmax
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 2,2
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 3,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(zz,Fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],1,zz[length(zz)],1)
if(any(h))segments(z0[h],1,z0[h],p.z0[h])
if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h])
title("Verteilungsfunktion von N(0,1)")
# PLOT 3,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(zz,fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],0,zz[length(zz)],0)
if(any(h))abline(v=z0[h])
title("Dichte von N(0,1)")

par(mfrow=c(1,1))

#:72

        print("Dichte- und Verteilungsfunktion:")
        print(cbind(x       =x.F,
                    "f(x)"  =dnorm(x.F,mu,sigma),
                    "F(x)"  =pnorm(x.F,mu,sigma),
                    "1-F(x)" =1-pnorm(x.F,mu,sigma)))
       },
       {
        print("Bitte Wahrscheinlichkeiten eingeben! F(x)=?")
        Fx<-scan(,0); if(length(Fx)==0) Fx<-c(.05,.1,.25,.5,.75,.9,.95)      #R
        
#69:
print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma,
                   "E(X)-2sigma"=mu-2*sigma,
                   "E(X)-sigma"=mu-   sigma,
                   "E(X)+sigma"=mu+   sigma,
                   "E(X)+2sigma"=mu+2*sigma) )


#:69

        print("Quantile:")
        x.F<-qnorm(Fx,mu,sigma)
        print(cbind("F(x)"=Fx,x=x.F))
        
#72:
x<-x.F
xmin<-min(-3.5,qnorm(.01,mu,sigma),x)
xmax<-max(3.5,qnorm(.99,mu,sigma),x)
z0<-(x-mu)/sigma
p.z0<-pnorm(z0)
xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150)
xx<-xx[xmin<=xx&xx<=xmax]
Fxx<-pnorm(xx,mu,sigma)
fxx<-dnorm(xx,mu,sigma)
zz<-seq(from=-3,to=3,length=150)
Fzz<-pnorm(zz)
fzz<-dnorm(zz)
fmax<-max(fxx,fzz)

par(mfrow=c(3,2))
# PLOT 1,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(xx,Fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],1,xx[length(xx)],1)
abline(v=x)
title("F(x)")
# PLOT 1,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(xx,fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],0,xx[length(xx)],0)
abline(v=x)
title("f(x)")
# PLOT 2,1
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
h<-xmin<=z0 & z0<=xmax
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 2,2
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 3,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(zz,Fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],1,zz[length(zz)],1)
if(any(h))segments(z0[h],1,z0[h],p.z0[h])
if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h])
title("Verteilungsfunktion von N(0,1)")
# PLOT 3,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(zz,fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],0,zz[length(zz)],0)
if(any(h))abline(v=z0[h])
title("Dichte von N(0,1)")

par(mfrow=c(1,1))

#:72

       },
       {
        print("Die Zufallsvariable wird um  b  verschoben.")
        print("Bitte  b  eingeben (Default: b==0) b=?")
        b<-c(scan(,0,n=1),0)[1]                                              #R
        mu<-mu+b
        
#69:
print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma,
                   "E(X)-2sigma"=mu-2*sigma,
                   "E(X)-sigma"=mu-   sigma,
                   "E(X)+sigma"=mu+   sigma,
                   "E(X)+2sigma"=mu+2*sigma) )


#:69

        
#72:
x<-x.F
xmin<-min(-3.5,qnorm(.01,mu,sigma),x)
xmax<-max(3.5,qnorm(.99,mu,sigma),x)
z0<-(x-mu)/sigma
p.z0<-pnorm(z0)
xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150)
xx<-xx[xmin<=xx&xx<=xmax]
Fxx<-pnorm(xx,mu,sigma)
fxx<-dnorm(xx,mu,sigma)
zz<-seq(from=-3,to=3,length=150)
Fzz<-pnorm(zz)
fzz<-dnorm(zz)
fmax<-max(fxx,fzz)

par(mfrow=c(3,2))
# PLOT 1,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(xx,Fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],1,xx[length(xx)],1)
abline(v=x)
title("F(x)")
# PLOT 1,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(xx,fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],0,xx[length(xx)],0)
abline(v=x)
title("f(x)")
# PLOT 2,1
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
h<-xmin<=z0 & z0<=xmax
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 2,2
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 3,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(zz,Fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],1,zz[length(zz)],1)
if(any(h))segments(z0[h],1,z0[h],p.z0[h])
if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h])
title("Verteilungsfunktion von N(0,1)")
# PLOT 3,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(zz,fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],0,zz[length(zz)],0)
if(any(h))abline(v=z0[h])
title("Dichte von N(0,1)")

par(mfrow=c(1,1))

#:72

       },
       {
        print("Die Zufallsvariable wird um  a  gestreckt.")
        print("Bitte  a  eingeben (Default: a==1) a=?")
        a<-c(scan(,0,n=1),1)[1]                                              #R
        if(a==0){ print("ERROR: a==0") } else {
          mu<-a*mu
          sigma<-abs(a)*sigma
          
#69:
print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma,
                   "E(X)-2sigma"=mu-2*sigma,
                   "E(X)-sigma"=mu-   sigma,
                   "E(X)+sigma"=mu+   sigma,
                   "E(X)+2sigma"=mu+2*sigma) )


#:69

          
#72:
x<-x.F
xmin<-min(-3.5,qnorm(.01,mu,sigma),x)
xmax<-max(3.5,qnorm(.99,mu,sigma),x)
z0<-(x-mu)/sigma
p.z0<-pnorm(z0)
xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150)
xx<-xx[xmin<=xx&xx<=xmax]
Fxx<-pnorm(xx,mu,sigma)
fxx<-dnorm(xx,mu,sigma)
zz<-seq(from=-3,to=3,length=150)
Fzz<-pnorm(zz)
fzz<-dnorm(zz)
fmax<-max(fxx,fzz)

par(mfrow=c(3,2))
# PLOT 1,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(xx,Fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],1,xx[length(xx)],1)
abline(v=x)
title("F(x)")
# PLOT 1,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(xx,fxx)
segments(par()$usr[1],0,xx[1],0)
segments(par()$usr[2],0,xx[length(xx)],0)
abline(v=x)
title("f(x)")
# PLOT 2,1
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
h<-xmin<=z0 & z0<=xmax
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 2,2
plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="")
abline(0,1,lty=2)
abline(mu,sigma,lty=4)
legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4))
segments(x,xmax,x,x)
segments(x,x,pmin(xmax,pmax(z0,xmin)),x)
if(any(h))segments(z0[h],xmin,z0[h],x[h])
title("Transformation")
# PLOT 3,1
plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n")
lines(zz,Fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],1,zz[length(zz)],1)
if(any(h))segments(z0[h],1,z0[h],p.z0[h])
if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h])
title("Verteilungsfunktion von N(0,1)")
# PLOT 3,2
plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n")
lines(zz,fzz)
segments(par()$usr[1],0,zz[1],0)
segments(par()$usr[2],0,zz[length(zz)],0)
if(any(h))abline(v=z0[h])
title("Dichte von N(0,1)")

par(mfrow=c(1,1))

#:72

        }
       }
)
if(abbruch){abbruch<-FALSE;break} #R

#:71

  }
}

#:64

#73:
demo.Laplace<-function(n=10,p=0.5){
  
#74:
par(mfrow=c(1,2))

#:74

  repeat{
     
#75:
cat("Geben Sie n ein! n=?\n")
n<-max(1,floor(c(scan(,0,n=1),n)[1]))                                        #R
cat("Geben Sie p ein! p=?\n")
p<-c(scan(,0,n=1),p)[1]                                                      #R
p<-max(.0001,min(.9999,p))

#:75

     
#77:
sigma<-((mu<-n*p)*(1-p))^0.5
x<-0:n; if(n>19)x<-x[x>mu-5*sigma&x<mu+5*sigma]
y<-dbinom(x,n,p)
if(n>19){
     x<-x[y>0.0001]
     y<-y[y>0.0001]
}
xnorm<-seq(from=mu-5*sigma,to=mu+5*sigma,length=250)
xnorm<-xnorm[xnorm>=min(x)&xnorm<=max(x)]
ynorm<-dnorm(xnorm,mu,sigma)
ymax<-max(y,ynorm)

plot(x,y,ylab="f(x)",ylim=c(0,ymax))
segments(x,0,x,y)
lines(xnorm,ynorm)
title(paste("WS-Funktion/NV-Dichte\nn=",n,", p=",p))

#:77

     
#78:
d <-y-           (pnorm(x,mu,sigma)-pnorm(x-1,mu,sigma))
cd<-pbinom(x,n,p)-pnorm(x,mu,sigma)

plot(x,cd,ylab="error",ylim=c(min(0,d,cd),max(0,d,cd)))
segments(x,0,x,d)
abline(h=0)
title("Fehler:f()-Approximation\n(Punkte:Fehler,kumuliert)")

#:78

     
#76:
cat("Wollen Sie die Funktion beenden? (j=ja)\n")
wahl<-c(scan(,"",n=1),"n")[1]                                                #R
if(wahl=="j") break

#:76

  }
  
#79:
par(mfrow=c(1,1))

#:79

}

#:73

#80:
demo.zgws<-function(model="norm",n=10,runs=100,...){

#81:

#82:
init.abschnitt<-T #R
ynorm<-pnorm(xnorm<-(-80:80)/20)

#87:
cat("Modell / Aus welcher Verteilung sollen\n")
cat("Stichproben gezogen werden (Default: Normalverteilung)?\n")
wahl<-menu(c(
       "Normalverteilung",
       "Exponentialverteilung",
       "Gleichverteilung",
       "Cauchy-Verteilung",
       "Binomialverteilung",
       "Poisson-Verteilung"))
if(wahl==0) {if(init.abschnitt) return() else break } #R
abbruch<-FALSE #R
switch(1+wahl,
         abbruch<-TRUE, #R
       {
         cat("Bitte Mittel der Normalverteilung eingeben (Default: 0)!\n")
           mue<-c(scan(,0,n=1),0)[1]                                         #R
         cat("Bitte Standardabweichung eingeben (Default: 1)!\n")
           sigma<-c(scan(,0,n=1),1)[1]                                       #R
         if(sigma<=0){cat("ERROR: sigma nicht positiv!\n"); sigma<-1}
         realisiere.stpr<-"rnorm(n*runs,mue,sigma)"
         legend<-paste("NV(",mue,",",sigma,")",sep="")
       },{
         cat("Bitte LAMBDA der Exponentialverteilung eingeben (Default: 1)!\n")
           lambda<-c(scan(,0,n=1),1)[1]                                      #R
         if(lambda<=0){cat("ERROR: lambda nicht positiv!\n"); lambda<-1}
         realisiere.stpr<-"rexp(n*runs,lambda)"
         legend<-paste("Exp(",lambda,")",sep="")
       },{
         cat("Bitte Untergrenze der Gleichverteilung eingeben (Default: 0)!\n")
           ug<-c(scan(,0,n=1),0)[1]                                          #R
         cat("Bitte Obergrenze eingeben (Default: 1)!\n")
           og<-c(scan(,0,n=1),1)[1]                                          #R
         if(og<=ug){cat("ERROR: Grenzen falsch!\n"); og<-1+ug<-0}
         realisiere.stpr<-"runif(n*runs,ug,og)"
         legend<-paste("U(",ug,",",og,")",sep="")
       },{
         cat("Bitte Zentrum der Cauchy-Verteilung eingeben (Default: 0)!\n")
           mue<-c(scan(,0,n=1),0)[1]                                         #R
         cat("Bitte Skalenparameter eingeben (Default: 1)!\n")
           sigma<-c(scan(,0,n=1),1)[1]                                       #R
         if(sigma<=0){cat("ERROR: Skalenparameter nicht positiv!\n"); sigma<-1}
         realisiere.stpr<-"rcauchy(n*runs,mue,sigma)"
         legend<-paste("Cauchy(",mue,",",sigma,")",sep="")
       },{
         cat("Bitte n der Binomialverteilung eingeben (Default: 1)!\n")
           nbin<-floor(c(scan(,0,n=1),1)[1])                                 #R
         cat("Bitte p eingeben (Default: 0.5)!\n")
           p<-c(scan(,0,n=1),0.5)[1]                                         #R
         if(nbin<=0){cat("ERROR: n nicht positiv!\n"); nbin<-1}
         if(p<=0|p>=1){cat("ERROR: p falsch!\n"); p<-0.5}
         realisiere.stpr<-"rbinom(n*runs,nbin,p)"
         legend<-paste("Binom(",nbin,",",p,")",sep="")
       },{
         cat("Bitte LAMBDA der Poisson-Verteilung eingeben (Default: 1)!\n")
           lambda<-c(scan(,0,n=1),1)[1]                                      #R
         if(lambda<=0){cat("ERROR: lambda nicht positiv!\n"); lambda<-1}
         realisiere.stpr<-"rpois(n*runs,lambda)"
         legend<-paste("Poisson(",lambda,")",sep="")
       }
) # end of switch
if(abbruch){abbruch<-FALSE;break} #R
cat("Bitte Umfang der einzelnen Stichproben eingeben! (Default: 5)\n")
n<-max(1,min(floor(c(scan(n=1),5)[1]),100000))                               #R
cat("Bitte Umfang der Wiederholungen eingeben! (Default: 100)\n")
runs<-max(1,min(floor(c(scan(n=1),100)[1]),10000))                           #R
cat("Bitte Start des Zufallszahlengenerators eingeben! (Default: 13)\n")
#S set.seed(max(1,min(floor(c(scan(n=1),13)[1]),999)))
set.seed(max(1,min(floor(c(scan(n=1),13)[1]),999)))                          #R


#:87

par(mfrow=1:2)
init.abschnitt<-F #R

#:82

repeat{
  
#84:
x<-eval(parse(text=realisiere.stpr))
x<-matrix(x,n,runs)
#:84

  
#85:
xsum<-apply(x,2,sum)
xsum<-xsum-mean(xsum)
xsum<-xsum/sqrt(var(xsum))

#:85

  
#86:
plot(c(-4,4),c(0,1),type="n",xlab="transformierte Mittel",ylab="F.dach, Phi")
points(sort(xsum),(1:length(xsum))/length(xsum))
lines(xnorm,ynorm)
text(-3,0.9,legend)
text(-3,0.8,paste("n =",n))
title("empirische Verteilung\ntransformierte Mittel")
pfade<-apply(x,2,cumsum)/matrix(1:n,n,runs)
yminmax<-range(pfade[,1:min(15,runs)])
plot(1,xlim=c(1,n),ylim=yminmax,xlab="x",ylab="Mittel bis x")
title("Entwicklung der Mittel")
for(i in 1:min(15,runs)) lines(1:n,pfade[,i])


#:86

  
#87:
cat("Modell / Aus welcher Verteilung sollen\n")
cat("Stichproben gezogen werden (Default: Normalverteilung)?\n")
wahl<-menu(c(
       "Normalverteilung",
       "Exponentialverteilung",
       "Gleichverteilung",
       "Cauchy-Verteilung",
       "Binomialverteilung",
       "Poisson-Verteilung"))
if(wahl==0) {if(init.abschnitt) return() else break } #R
abbruch<-FALSE #R
switch(1+wahl,
         abbruch<-TRUE, #R
       {
         cat("Bitte Mittel der Normalverteilung eingeben (Default: 0)!\n")
           mue<-c(scan(,0,n=1),0)[1]                                         #R
         cat("Bitte Standardabweichung eingeben (Default: 1)!\n")
           sigma<-c(scan(,0,n=1),1)[1]                                       #R
         if(sigma<=0){cat("ERROR: sigma nicht positiv!\n"); sigma<-1}
         realisiere.stpr<-"rnorm(n*runs,mue,sigma)"
         legend<-paste("NV(",mue,",",sigma,")",sep="")
       },{
         cat("Bitte LAMBDA der Exponentialverteilung eingeben (Default: 1)!\n")
           lambda<-c(scan(,0,n=1),1)[1]                                      #R
         if(lambda<=0){cat("ERROR: lambda nicht positiv!\n"); lambda<-1}
         realisiere.stpr<-"rexp(n*runs,lambda)"
         legend<-paste("Exp(",lambda,")",sep="")
       },{
         cat("Bitte Untergrenze der Gleichverteilung eingeben (Default: 0)!\n")
           ug<-c(scan(,0,n=1),0)[1]                                          #R
         cat("Bitte Obergrenze eingeben (Default: 1)!\n")
           og<-c(scan(,0,n=1),1)[1]                                          #R
         if(og<=ug){cat("ERROR: Grenzen falsch!\n"); og<-1+ug<-0}
         realisiere.stpr<-"runif(n*runs,ug,og)"
         legend<-paste("U(",ug,",",og,")",sep="")
       },{
         cat("Bitte Zentrum der Cauchy-Verteilung eingeben (Default: 0)!\n")
           mue<-c(scan(,0,n=1),0)[1]                                         #R
         cat("Bitte Skalenparameter eingeben (Default: 1)!\n")
           sigma<-c(scan(,0,n=1),1)[1]                                       #R
         if(sigma<=0){cat("ERROR: Skalenparameter nicht positiv!\n"); sigma<-1}
         realisiere.stpr<-"rcauchy(n*runs,mue,sigma)"
         legend<-paste("Cauchy(",mue,",",sigma,")",sep="")
       },{
         cat("Bitte n der Binomialverteilung eingeben (Default: 1)!\n")
           nbin<-floor(c(scan(,0,n=1),1)[1])                                 #R
         cat("Bitte p eingeben (Default: 0.5)!\n")
           p<-c(scan(,0,n=1),0.5)[1]                                         #R
         if(nbin<=0){cat("ERROR: n nicht positiv!\n"); nbin<-1}
         if(p<=0|p>=1){cat("ERROR: p falsch!\n"); p<-0.5}
         realisiere.stpr<-"rbinom(n*runs,nbin,p)"
         legend<-paste("Binom(",nbin,",",p,")",sep="")
       },{
         cat("Bitte LAMBDA der Poisson-Verteilung eingeben (Default: 1)!\n")
           lambda<-c(scan(,0,n=1),1)[1]                                      #R
         if(lambda<=0){cat("ERROR: lambda nicht positiv!\n"); lambda<-1}
         realisiere.stpr<-"rpois(n*runs,lambda)"
         legend<-paste("Poisson(",lambda,")",sep="")
       }
) # end of switch
if(abbruch){abbruch<-FALSE;break} #R
cat("Bitte Umfang der einzelnen Stichproben eingeben! (Default: 5)\n")
n<-max(1,min(floor(c(scan(n=1),5)[1]),100000))                               #R
cat("Bitte Umfang der Wiederholungen eingeben! (Default: 100)\n")
runs<-max(1,min(floor(c(scan(n=1),100)[1]),10000))                           #R
cat("Bitte Start des Zufallszahlengenerators eingeben! (Default: 13)\n")
#S set.seed(max(1,min(floor(c(scan(n=1),13)[1]),999)))
set.seed(max(1,min(floor(c(scan(n=1),13)[1]),999)))                          #R


#:87

}

#83:
par(mfrow=c(1,1))

#:83


#:81

}
#:80

#88:
qq.x.model<-function(x,model,parameter){
 
#89:
mods<-c("norm","exp","pois","geom","lnorm")
if(missing(model)){
        cat("Welches Modell?\n")
        wahl<-menu(c("Normalverteilung",
                     "Exponentialverteilung",
                     "Poisson-Verteilung",
                     "geometrische Verteilung",
                     "Lognormalverteilung"))
        wahl<-max(1,wahl) # sicherheitshalber        
        model<-mods[wahl]
}
model<-model[1]
if(is.character(model[1])) model<-(1:length(mods))[mods==model]
if(0==length(model) || 1<length(model) || !any((1:length(mods))==model)){
 print("ERROR: Modell nicht im Angebot!"); break
}
if(missing(parameter)){
 parameter<-switch(model,
                   c(mean(x),var(x)^0.5),     # norm
                   1/mean(x),# exp
                   mean(x),  # Poisson
                   length(x)/(sum(x)+length(x)), # geom
                   c(mean(log(x)),var(log(x))^0.5)   # lnorm
                  )
}

#:89

 
#90:
p<-((1:length(x))-0.5)/length(x)
y<-switch(model,
          qnorm(p,parameter[1],parameter[2]), # norm
          qexp(p,parameter), # exp
          qpois(p,parameter), # Poisson
          qgeom(p,parameter), # geom
          qlnorm(p,parameter[1],parameter[2]) # lnorm
         )

#:90

 
#91:
x<-sort(x)
if(model!=5){
    plot(x,y,xlab="Daten",ylab=mods[model])
}else{
    plot(x,y,log="xy",xlab="Daten",ylab=mods[model])
}
abline(0,1)
title("QQ-Plot")

#:91

}

#:88

#92:
identify.exp<-function(x,cut.off=4/5){
  n<-length(x)
  x<-  sort(x)
  y<- -log(1-((1:n)-.5)/n)
  plot(x,y,xlab="x",ylab="-log(1-F.dach(x))")
  h<-floor(n*cut.off)
  r<-c(lsfit(x[1:h],y[1:h],intercept=F)$coef) #R
  if(length(r)==1) r<-c(0,r) #R
  abline(r)
  if(length(r)==2) r<-r[2] #R
  names(r)<-"lambda.dach"
  r
}

#:92

#93:
identify.pois<-function(x){
  y<-table(x); h<- y>1
  y<-y[h]/length(x)
  x<-as.numeric(names(y))
  y<-log(y)+log(gamma(x+1))
  plot(x,y,xlab="x",ylab="")
  r<-c(lsfit(x,y)$coef) #R
  abline(r)
  r<- c(-r[1],exp(r[2]))
  names(r)<-c("lambda.dach1","lambda.dach2")
  r
}

#:93

#94:
geom.p.est<-function(x){
   n<-length(x)
   yy<-table(x); xx<-as.numeric(names(yy))
   yy<-as.vector(yy); names(yy)<-NULL
   plot(xx,log(yy/n),xlab="Wartezeit",ylab="log(n.i/n)")
   h<-floor((length(yy))/2)
   if(length(h)>1){
     abline(r<-lsfit(xx[1:h],log(yy[1:h]/n))$coef)
     r<-abs((0:1)-exp(r))
     names(r)<-c("p aus Achsenabschnitt","p aus Steigung")
   }else{
     print("Warnung: Keine Schaetzung moeglich!")
     r<-c(0,0)
   }
   return(r)
}

#:94

#95:
interval.est.lambda<-function(x){
  cat("Belastungsrate im Zeitablauf\n")
  print("Geben Sie die Anzahl der Ereignisse an, die zusammen betrachtet")
  print("werden sollen! Es duerfen auch mehrere (maximal 9)")
  print("Anzahlen eingegeben werden. (Default:  5 10 20) Anzahlen=?")
  anz.set<-scan(,0,n=9); if(length(anz.set)==0) anz.set<-c(5,10,20)          #R
  par(mfrow=matrix(c(1,1, 1,2, 1,3, 2,2, 2,3, 2,3, 3,3, 3,3, 3,3),2,9)
          [,length(anz.set)])
  for(anz in anz.set){
    if(all(x==sort(x))) h<-x else h<-cumsum(x)
    hx<-.5*(h[(1+anz):length(h)]+h[1:(length(h)-anz)])
    hy<-anz/(h[(1+anz):length(h)]-h[1:(length(h)-anz)])
    plot(hx,hy,type="l",xlab="time",ylab="Belastung")
    title(paste("anz =",anz))
  }
  par(mfrow=c(1,1))
}

#:95

#96:

#:96

#97:
   select.spalte<-function(dm=matrix(runif(100),10,10)){ #R
  
#98:
cat("\n\n")
cat("+-----------------------------------------------------------+\n")
cat("|Programm zur Selektion eines Merkmals aus einer Datenmatrix|\n")
cat("+-----------------------------------------------------------+\n\n")
cat(" Mit diesem Programm koennen Sie aus der Datenmatrix\n")
cat(" eine Merkmalsspalte auswaehlen.\n")
cat(" Danach koennen Sie mittels eines zweiten Merkmals\n")
cat(" die ausgewaehlte Spalte verkuerzen.\n")
cat("  BITTE RETURN druecken \n\n")
readline()
if(is.list(dm))                 dm<-dm[[1]]
if(!is.matrix(dm))               dm<-cbind(dm)
if(is.null(dimnames(dm)))        dimnames(dm)<-list(NULL,1:ncol(dm))
if(0==length(dimnames(dm)[[2]])) dimnames(dm)[[2]]<-1:ncol(dm)
nspalten<-ncol(dm)
dm.out<-NULL

#:98

  
#99:
  cat(paste("  Die Datenmatrix hat",nspalten,"Spalten.\n"))
  cat("  Hier ist die Liste der Spaltennamen mit den Spaltennummern:\n\n")
  print(rbind(dimnames(dm)[[2]]))
  cat("\n")
  cat("  Welche Spalte wollen Sie auswaehlen?\n")
  cat("  Geben Sie die Nummer der von Ihnen gewuenschten Spalte an!\n")
  wahl<-c(scan(,0,n=1),1)[1]                                                 #R
  wahl<-floor(wahl)
  wahl<-wahl[wahl<=nspalten & wahl>0]
  if(0==length(wahl)){
        print("ERROR: Falsche Eingabe - ABBRUCH")
        break
  }
  dm.h<-dm[,wahl]

#:99

  
#100:
cat("\n")
cat("Auswahl von Teilelementen der gerade gewaehlten Spalte\n")
cat("------------------------------------------------------\n")
cat(" Nun koennen Elemente der gewaehlte Spalte durch Festlegung\n")
cat(" einer Bedingungen ausgewaehlt/ausgeschlossen werden.\n")
cat("\n")
cat(" Hier ist die Liste der Spaltennamen mit den Spaltennummern.\n\n")
print(rbind(dimnames(dm)[[2]]))
cat("\n")
cat(" Welche Spalte wird fuer die Bedingung benoetigt?\n")
cat(" Eine leere Eingabe fuehrt zu keiner (weiteren) Reduktion.\n")
wahl<-scan(,0,n=1)                                                           #R
if(length(wahl)>0){
   wahl<-floor(wahl)
   wahl<-wahl[wahl<=nspalten & wahl>0]
   key<-dm[,wahl]
   cat("\n  Hier ist ein Ausdruck der Spalte fuer die Bedingung:\n")
   print(key)
   cat("     Welchen Typ von Bedingung wuenschen Sie?\n")
   relation<-menu(c("Bedingungs-Spalte < Zahl", "Bedingungs-Spalte = Zahl",
                    "Bedingungs-Spalte > Zahl"))
   cat("     Die Vergleichszahl soll sein:\n")
   zahl<-scan(,0,n=1)                                                        #R
   cat("\n")
   switch(relation,   log.vec<-key < zahl,
                      log.vec<-key ==zahl,
                      log.vec<-key > zahl)
   dm.h<-dm.h[log.vec]
}

#:100

  
#101:
dm.out<-dm.h
return(dm.out)

#:101

}

#:97

#102:
select.and.split<-function(dm=matrix(runif(100),10,10)){
  
#103:
cat("\n\n")
cat("+--------------------------------------------------------------+\n")
cat("|Programm zur Auswahl von Merkmalsspalten aus einer Datenmatrix|\n")
cat("+--------------------------------------------------------------+\n\n")
cat(" Mit diesem Programm koennen Sie aus der Datenmatrix eine Spalte\n")
cat(" auswaehlen und dann mittels eines anderen Merkmals aufsplitten,\n")
cat(" oder sie koennen mehrere verschiedene Spalten auswaehlen.\n")
cat("  BITTE RETURN druecken \n\n")
readline()
if(is.list(dm))                  dm<-dm[[1]]
if(!is.matrix(dm))               dm<-cbind(dm)
if(is.null(dimnames(dm)))        dimnames(dm)<-list(NULL,1:ncol(dm))
if(0==length(dimnames(dm)[[2]])) dimnames(dm)[[2]]<-1:ncol(dm)
nspalten<-ncol(dm)

#:103

  
#104:
  cat(paste("  Die Datenmatrix hat",nspalten,"Spalten.\n"))
  cat("  Hier ist die Liste der Spaltennamen mit den Spaltennummern:\n\n")
  print(rbind(dimnames(dm)[[2]]))
  cat("\n")
  cat("  Welche Spalte(n) wollen Sie auswaehlen?\n")
  cat("  Geben Sie die Nummer(n) der von Ihnen gewuenschten Spalte an!\n")
  wahl<-scan(,0)                                                             #R
  wahl<-floor(wahl)
  wahl<-wahl[wahl<=nspalten & wahl>0]
  if(0==length(wahl)){
        print("ERROR: Falsche Eingabe - ABBRUCH")
        break
  }
  dm.h<-dm[,wahl]
  if(is.matrix(dm.h)) {
    if(is.null(dimnames(dm.h)[[2]])){
       namen<-paste("vorher",wahl)
    } else {
       namen<-dimnames(dm.h)[[2]]
    }
    dm.h<-split(dm.h,col(dm.h))
    names(dm.h)<-namen
  }


#:104

  
#105:
if(length(wahl)==1){
  cat("\n")
  cat(" Nun koennen Elemente der gewaehlte Spalte gemaess den\n")
  cat(" Merkmalsauspraegungen einer anderen Spalte gesplittet werden.\n")
  cat("\n")
  cat("    Hier ist die Liste der Spaltennamen mit den Spaltennummern.\n\n")
  print(rbind(dimnames(dm)[[2]]))
  cat("\n")
  cat("    Welche Spalte soll zum Splitten ausgewaehlt werden?\n")
  cat("    Eine leere Eingabe fuehrt nicht zu einer Zerlegung.\n")
  wahl<-scan(,0,n=1)                                                         #R
  if(length(wahl)>0){
   wahl<-floor(wahl)
   wahl<-wahl[wahl<=nspalten & wahl>0]
   if(wahl<=nspalten & wahl>0) {
      dm.h<-split(dm.h,dm[,wahl])
      names(dm.h)<-names(table(dm[,wahl]))
   }
  }
}

#:105

  
#106:
return(dm.h)

#:106

}

#:102


#108:
auswahl.masszahlen<-function(){
   abbruch<-FALSE
   repeat{
    switch(1+menu(c(
                  "lege Daten auf  x  ab",
                  "zeige  x  an",
                  "zeige Rangwertreihe von  x  an",
                  "berechne Mittelwert",
                  "berechne Median",
                  "berechne Extrema",
                  "berechne Midrange",
                  "berechne getrimmtes Mittel",
                  "berechne Trimean",
                  "berechne Stichprobenvarianz",
                  "berechne Standardabweichung",
                  "berechne Inter-Quartilsabstand",
                  "berechne zusammenfassende Statistiken",
                  "transformiere mittels Box-Cox-Transformation"),title="Auswahl: Masszahlen")
            ,{ abbruch<-TRUE
           },{     switch(1+menu(         c(
                                 "Zeitdifferenzen vom 03.02.97",
                                 "Zeitdifferenzen vom 17.02.97",
                                 "Datenmengen vom 03.02.97",
                                 "Datenmengen vom 17.02.97",
                                 "Datenmengen/Zeitdifferenzen vom 03.02.97",
                                 "Datenmengen/Zeitdifferenzen vom 17.02.97",
                                 "Merkmal aus Studentenumfrage 1995",
                                 "Merkmal aus Studentenumfrage 1996",
                                 "Merkmal aus Studentenumfrage 1997"
                                ),title="Auswahl: Datensatz"
                          ),
                          "",
                          x<-dzeitpunkte.03.02.97,
                          x<-dzeitpunkte.17.02.97,
                          x<-mengen.03.02.97,
                          x<-mengen.17.02.97,
                          x<-mengen.03.02.97/dzeitpunkte.03.02.97,
                          x<-mengen.17.02.97/dzeitpunkte.17.02.97,
                          x<-select.spalte(frabo95),
                          x<-select.spalte(frabo96),
                          x<-select.spalte(frabo97)
                   )
               assign("x",x,,envir=pos.to.env(match(".GlobalEnv",search())))
               assign("x",x,,envir=revive.env)
           },{ cat("Daten x: \n");               print(x)
           },{ cat("Rangwertreihe von x: \n");               print(sort(x))
           },{ cat("Mittelwert\n");               print(mean(x))
           },{ cat("Median\n");               print(median(x))
           },{ cat("Maximum\n");               print(max(x))
               cat("Minimum\n");               print(min(x))
           },{ cat("Midrange\n");               print((min(x)+max(x))/2)
           },{ cat("getrimmtes Mittel\n")
               cat("Wieviel Prozent sollen an jeder Seite enfernt werden?\n")
               cat("  Eingabe:\n");               result<-mean(x,trim=min(.5,.01*c(scan(,0,n=1),0)[1]))
               cat("  ergibt:\n");               print(result)
           },{ cat("Trimean\n")
               print(sum(c(0.25,0.5,0.25)*quantile(x,c(0.25,0.5,0.75))))
           },{ cat("Stichprobenvarianz\n")
               print(var(x))
           },{ cat("Stichprobenstandardabweichung\n")
               print(var(x)^0.5)
           },{ cat("Inter-Quartilsabstand\n")
               print(as.vector(quantile(x,0.75)-quantile(x,0.25)))
           },{ cat("Zusammenfassende Statistiken\n")
               print(summary.stats(x))
           },{
               cat("Statistiken der transformierten Daten\n")
               xtrans<-box.cox.transformation(x)
               print(summary.stats(xtrans))
               print("Wollen Sie das Transformationsergebnis auf x ablegen (j/n)?")
               if(readline()=="j") x<-xtrans
               assign("x",x,,envir=pos.to.env(match(".GlobalEnv",search())))
               assign("x",x,,envir=revive.env)
           }
    ) # end of switch
    if(abbruch){abbruch<-F; break}
      .Return()
   }   # end of repeat
}      # end of   Menu Masszahlen
#:108

#109:
auswahl.graphiken<-function(){
 abbruch<-FALSE
 repeat{
  switch(1+menu(c(
                "lege Daten auf [[x]] ab",
                "bilde Ausschnitt der Daten",
                "erstelle graphische 5-Zahlen-Zusammenfassung",
                "erstelle Boxplot",
                "erstelle Jitterplot",
                "erstelle Stabdiagramm",
                "erstelle Haeufigkeitstabelle",
                "erstelle Stem-and-Leaf-Plot",
                "erstelle Histogramm",
                "erstelle Histogramm mit manuellen Grenzen",
                "erstelle Dichtespur",
                "aktiviere interaktives Dichtespur-Sektion",
                "erstelle F.dach",
                "erstelle F.dach mit manuellen Grenzen",
                "befrage F.dach graphisch",
                "transformiere mittels Box-Cox-Transformation"),title="Auswahl: Graphiken")
            ,{ abbruch<-TRUE
           },{     switch(1+menu( c(
                                 "Zeitdifferenzen vom 03.02.97",
                                 "Zeitdifferenzen vom 17.02.97",
                                 "logarithmierte Datenmengen vom 03.02.97",
                                 "logarithmierte Datenmengen vom 17.02.97",
                                 "Datenmengen vom 03.02.97",
                                 "Datenmengen vom 17.02.97",
                                 "Datenmengen/Zeitdifferenzen vom 03.02.97",
                                 "Datenmengen/Zeitdifferenzen vom 17.02.97",
                                 "Merkmal aus Studentenumfrage 1995",
                                 "Merkmal aus Studentenumfrage 1996",
                                 "Merkmal aus Studentenumfrage 1997"
                                 ),title="Auswahl: Datensatz"
                          ),
                          "",
                          x<-dzeitpunkte.03.02.97,
                          x<-dzeitpunkte.17.02.97,
                          x<-log(mengen.03.02.97),
                          x<-log(mengen.17.02.97),
                          x<-mengen.03.02.97,
                          x<-mengen.17.02.97,
                          x<-mengen.03.02.97/dzeitpunkte.03.02.97,
                          x<-mengen.17.02.97/dzeitpunkte.17.02.97,
                          x<-select.spalte(frabo95),
                          x<-select.spalte(frabo96),
                          x<-select.spalte(frabo97)
                   )

               assign("x",x,,envir=pos.to.env(match(".GlobalEnv",search())))
               assign("x",x,,envir=revive.env)
           },{ cat("Entfernung extremer Werte\n")
               x<-remove.extreme.values(x)
               assign("x",x,,envir=pos.to.env(match(".GlobalEnv",search())))
               assign("x",x,,envir=revive.env)
           },{ cat("Graphische 5-Zahlen-Zusammenfassung\n")
               boxplot(x,range=0)
           },{ cat("Boxplot\n")
               boxplot(x)
           },{ cat("Jitterplot\n")
               jitterplot(x)
           },{ cat("Stabdiagramm\n")
               stabdiagramm(x)
           },{ cat("Haeufigkeitstabelle von x\n")
               print(table(x))
           },{ cat("Stem-and-Leaf-Plot\n")
               stem.leaf(x)
           },{ cat("Histogramm\n")
               histogramm(x)
           },{ cat("Histogramm mit manuell eingegebenen Klassengrenzen\n")
               print("Grenzen nach einander eingeben")
               print("Nach Eingabe der letzten Klasse noch einmal: -> ENTER")
               print("Hinweis: Alle Werte muessen sich innerhalb der Grenzen befinden!")
               histogramm(x,breaks=sort(scan(,0)))
           },{ cat("Dichtespur\n")
               dichtespur(x)
           },{ cat("interaktive Dichtespur\n")
               dichtespur.interaktiv(x)
           },{ cat("Verteilungsfunktion\n")
               F.dach(x)
           },{
 cat("emp. Vtlgsfktn mit manuell eingegebenen Klassengrenzen\n")
 print("Grenzen nach einander eingeben")
 print("Nach Eingabe der letzten Klasse noch einmal: -> ENTER")
 F.dach(x,breaks=sort(scan(,0)))
           },{ cat("Graphische Befragung der empirischen Verteilungsfunktion\n")
               F.dach(x)
               F.dach.look.up(x)
           },{ cat("Statistiken der transformierten Daten\n")
               xtrans<-box.cox.transformation(x)
               print(summary(xtrans))
               print("Wollen Sie das Transformationsergebnis auf x ablegen (j/n)?")
               if(readline()=="j") x<-xtrans
           }
    ) # end of switch
    if(abbruch){abbruch<-F; break}
    .Return()
   }   # end of repeat
}      # end of fns

#:109

#110:
auswahl.mgraphiken<-function(){
 abbruch<-FALSE
 repeat{
  switch(1+menu(c(
                 "lege Datensaetze zur Bearbeitung auf xy ab",
                 "modifiziere Datensaetze xy",
                 "lege einen Datensatz von xy auf x ab",
                 "ermittle einige Masszahlen zu xy",
                 "erstelle Boxplot zu xy",
                 "erstelle Jitterplot zu xy",
                 "zeichne Histogramme zu xy",
                 "zeichne Dichtespuren zu xy",
                 "zeichne F.dach zu xy",
                 "zeichne zu xy F.dach und f.dach",
                 "erstelle Scatterplot zu den ersten beiden Elementen von xy",
                 "erstelle Scatterplot zu xy und zeichne konvexe Huellen",
                 "erstelle zu xy[1:2] einen QQ-Plot",
                 "erstelle Draftsmans Display zu xy",
                 "erstelle zum paarweisen Vergleich von xy QQ-Plots",
                 "mache mit xy Bootstrap-Experimente",
                 "Kontingenztabellenfunktion mit xy" ),title="Auswahl: multivariate Graphiken")
    ,{ abbruch<-TRUE
   },{ cat("Sollen die Daten von xy geloescht werden? (j/n)\n")
       r<-c(scan(,"",n=1),"n")[1]
       r<-substring(r,1,1)
       if(exists("xy")){ if(r=="j" | r=="J") xy<-NULL } else xy <- NULL
       abbruch<-FALSE          #R
       repeat{
           cat("Welche Datensaetze sollen an xy angefuegt werden?\n")
           switch(1+menu(                 c(
                         "Zeitdifferenzen vom 03.02.97",
                         "Zeitdifferenzen vom 17.02.97",
                         "Datenmengen vom 03.02.97",
                         "Datenmengen vom 17.02.97",
                         "Zeiten vom 03.02.97",
                         "Zeiten vom 17.02.97",
                         "Regen-Getreideertraege",
                         "Auto1",
                         "Auto2",
                         "Name einer Splus-Variablen",
                         "eigene Daten, selbst einzugeben",
                         "Merkmal aus Studentenumfrage 1995",
                         "Merkmal aus Studentenumfrage 1996",
                         "Merkmal aus Studentenumfrage 1997"
                        ),title="Auswahl: Datenauswahl"
                  ),
                  abbruch<-TRUE,  #R
                  xy<-c(xy,dz.03.02=list(dzeitpunkte.03.02.97)),
                  xy<-c(xy,dz.17.02=list(dzeitpunkte.17.02.97)),
                  xy<-c(xy,m.03.02=list(mengen.03.02.97)),
                  xy<-c(xy,m.17.02=list(mengen.17.02.97)),
                  xy<-c(xy,z.03.02=list(zeitpunkte.03.02.97)),
                  xy<-c(xy,z.17.02=list(zeitpunkte.17.02.97)),
                  xy<-c(xy,list(corn.rain,corn.yield)),
                  xy<-c(xy,list(car.time,car.miles,car.gals)),
                  xy<-c(xy,list(auto.stats[,1],
                                auto.stats[,2],
                                auto.stats[,8],
                                auto.stats[,9],
                                auto.stats[,10])),
                  {cat("Bitte S-Plus-Namen eingeben\n")
                  xy<-c(xy,list(eval(parse(text=scan(,"",n=1)))))},
                  {cat("Bitte Werte einzeln eingeben\n")
                  xy<-c(xy,list(scan(,0))) },
                  xy<-select.and.split(frabo95),
                  xy<-select.and.split(frabo96),
                  xy<-select.and.split(frabo97)
           )
           if(abbruch){abbruch<-FALSE;break}    #R
       }
       assign("xy",xy,,envir=pos.to.env(match(".GlobalEnv",search())))
               assign("xy",xy,,envir=revive.env)
   },{ switch(1+menu(        c(
                     "Komponente entfernen",
                     "Ausschnitte der Komponenten bilden",
                     "Werte einer Komponente begrenzen",
                     "Box-Cox-Transformationen durchfuehren",
                     "xy in anz gleich umfangreiche Klassen teilen",
                     "xy[1] gemaess xy[2] in anz Klassen teilen"),title="Auswahl: Operation"
              ),
            { " "
          },{ cat("Komponente von xy entfernen\n")
              print(paste("xy besitzt",length(xy),"Komponenten"))
              print("Welche Komponente soll entfernt werden?")
              h<-c(scan(,0,n=1),0)[1]
              xy[[h]]<-NULL
          },{ cat("Entfernung extremer Werte\n")
              xy<-remove.extreme.values(xy)
          },{ cat("Begrenzung extremer Werte von xy\n")
              xy<-limit.values(xy)
          },{ cat("Box-Cox-Transformation von xy\n")
              xy<-box.cox.transformation(xy)
          },{ cat("xy in gleich grosse Klassen einteilen: xy\n")
              xy<-split.in.eq.classes(xy)
          },{ cat(paste(getnames(xy)[1],"gemaess",getnames(xy)[2]))
              cat("in anz Klassen einteilen\n")
              xy<-split.x.by.y(xy[[1]],xy[[2]])
          }
       )
       assign("xy",xy,,envir=pos.to.env(match(".GlobalEnv",search())))
               assign("xy",xy,,envir=revive.env)
   },{ cat("Speicherung einer Komponente auf x\n")
       print("Der Datensatz besitzt die Komponenten")
       print(getnames(xy))
       print("Geben Sie die Nummer der Komponente an,")
       print("die auf x abgelegt werden soll.")
       n<-floor(c(scan(,0,n=1),0)[1])
       if(1<=n&n<=length(xy)) x<-xy[[n]]
       assign("x",x,,envir=pos.to.env(match(".GlobalEnv",search())))
               assign("x",x,,envir=revive.env)
   },{     abbruch<-FALSE          #R
           switch(1+menu(             c(
                         "zusammenfassende Statistiken",
                         "Anzahlen der einzelnen Datensaetze",
                         "Korrelationskoeffizienten"),title="Auswahl: Operation"
                  ),
                    { abbruch<-TRUE   #R
                  },{ cat("Berechnung der zusammenfassenden Statistiken von xy\n")
                      print(summary.stats(xy))
                  },{ cat("Anzahlen der Stichproben von xy\n")
                      print(lapply(xy,length))
                  },{
       cat("Berechnung des Korrelationskoeffizienten zu xy\n")
       print(cor(xy[[1]],xy[[2]]))
                  }
           )
          if(abbruch){abbruch<-FALSE;break}
   },{ cat("Boxplots zu xy\n")
       boxplot(xy)
   },{ jitterplot(xy)
   },{ cat("Histogramme zu xy\n")
       print("Wie viele Klassen sind sollen gebildet werden?")
       nclass<-c(scan(,0,n=1),7)[1]
       histogramm(xy,nclass=nclass)
   },{ cat("Dichtespuren zu xy\n")
       dichtespur(xy)
   },{ cat("F.dach zu xy zeichnen\n")
       F.dach(xy)
   },{ cat("F.dach und f.dach zu xy[1:2]\n")
       opar<-par(no.readonly=T); par(mfrow=2:1)
       cat("F.dach zu xy zeichnen\n")
       F.dach(xy)
       cat("Dichtespuren zu xy\n")
       dichtespur(xy)
       par(opar)
   },{ cat("Scatterplot zu xy\n")
       scatter(xy)
   },{ cat("Scatterplot von xy mit Huellen\n")
       scatter(xy, hull=100)
   },{ cat("QQ-Plot von xy[1:2]\n")
       qqplot(xy[[1]],xy[[2]],xlab=getnames(xy)[1],ylab=getnames(xy)[2])
       abline(0,1)
   },{ pairs(matrix(unlist(xy),ncol=length(xy)),labels=as.character(1:length(xy)))
   },{ cat("QQ-Plots zwischen den einzelnen Datensaetzen von xy\n")
       qqpairsplot(xy)
   },{ cat("Bootstrap-Experimente mit xy\n")
       bootstrap.experiment(xy,type="?")
   },{ cat("Bearbeitung von Kontingenztabellen\n")
       cat("Handelt es sich bei den Daten xy bereits um eine\n")
       cat("Kontingenztabelle? (j=ja)\n")
       kt.work(xy,is.xy.kt=("j"==readline()))
   }
    ) # end of switch
    if(abbruch){abbruch<-FALSE;break}
    .Return()                                                   
   }   # end of repeat
}      # end of fns
#:110

#111:
auswahl.modelle<-function(){
 abbruch<-FALSE
 repeat{
   switch(1+menu(c(
                 "lege Datensaetze zur Bearbeitung auf x ab",
                 "erzeuge Stichprobe x",
                 "modifiziere Datensaetze x",
                 "zeige x an, berechne Statistiken, stelle x dar",
                 "aktiviere Verteilungskalkulator",
                 "erstelle Verteilungs-Erkennungsplots",
                 "erstelle QQ-Plots zur Modellueberpruefung",
                 "erstelle Durchschnittskurven",
                 "ermittle Belastung im Zeitablauf"),,title="Auswahl: Modelle")
    ,{ abbruch<-TRUE
   },{ cat("Datensatz auswaehlen!\n")
       switch(1+menu(c(
                         "Zeitdifferenzen vom 03.02.97",
                         "Zeitdifferenzen vom 17.02.97",
                         "Datenmengen vom 03.02.97",
                         "Datenmengen vom 17.02.97",
                         "Zeiten vom 03.02.97",
                         "Zeiten vom 17.02.97",
                         "Name einer Splus-Variablen",
                         "eigene Daten, selbst einzugeben"),title="Auswahl: Datensatz"
                  ),
                  x<-x,
                  x<-c(dz.03.02=dzeitpunkte.03.02.97),
                  x<-c(dz.17.02=dzeitpunkte.17.02.97),
                  x<-c(m.03.02=mengen.03.02.97),
                  x<-c(m.17.02=mengen.17.02.97),
                  x<-c(z.03.02=zeitpunkte.03.02.97),
                  x<-c(z.17.02=zeitpunkte.17.02.97),
                  {cat("Bitte S-Plus-Namen eingeben\n")
                  x<-c(eval(parse(text=scan(,"",n=1))))},
                  {cat("Bitte Werte einzeln eingeben\n")
                  x<-c(scan(,0))}
       )

       assign("x",x,,envir=pos.to.env(match(".GlobalEnv",search())))
               assign("x",x,,envir=revive.env)
   },{     switch(1+menu( c(
                         "Binomial-Verteilung",
                         "geometrische Verteilung",
                         "Exponentialverteilung",
                         "Poisson-Verteilung" ),title="Auswahl: Verteilung"
             ),{
                      x<-x
             },{
       cat("Stichprobe aus Binomial-Verteilung\n")
       print("Wie gross soll der Parameter n sein (Default: n=1)?")
       n<-c(scan(,0,n=1),1)[1]
       print("Wie gross soll der Parameter p sein (Default: p=0.5)?")
       p<-c(scan(,0,n=1),0.5)[1]
       print("Wie viele Zufallszahlen wollen Sie (Default: r=100)?")
       r<-c(scan(,0,n=1),100)[1]
       print("Zufallsstartgeneratorstart (Default: ZZ=17)?")
       ZZ<-c(scan(,0,n=1),17)[1]
       set.seed(ZZ)
       x<-rbinom(r,n,p)

        },{ cat("Stichprobe aus geometrischer Verteilung\n")
            print("Welches p wuenschen Sie (Default=0.5)? p=?")
            p<-c(scan(,0,n=1),.5)[1]
            print("Welche Wiederholungsanzahl n wuenschen Sie (Default=100)? n=?")
            n<-c(scan(,0,n=1),100)[1]
            print("Welchen Zufallsgeneratorstart ZZ wuenschen Sie (Default=17)? ZZ=?")
            ZZ<-c(scan(,0,n=1),17)[1]
            set.seed(ZZ)
            x<-rgeom(n,p)

        },{ cat("Stichprobenziehung -- Exponentialverteilung\n")
            print("Welches lambda wuenschen Sie (Default=1)? lambda=?")
            lambda<-c(scan(,0,n=1),1)[1]
            print("Welchen Stichprobenumfang n wuenschen Sie (Default=100)? n=?")
            n<-c(scan(,0,n=1),100)[1]
            print("Welchen Zufallsgeneratorstart ZZ wuenschen Sie (Default=17)? ZZ=?")
            ZZ<-c(scan(,0,n=1),17)[1]
            set.seed(ZZ)
            x<-rexp(n,lambda)
        },{ cat("Stichprobenziehung -- Poisson-Verteilung\n")
            print("Welches lambda wuenschen Sie (Default=1)? lambda=?")
            lambda<-c(scan(,0,n=1),1)[1]
            print("Welchen Stichprobenumfang n wuenschen Sie (Default=100)? n=?")
            n<-c(scan(,0,n=1),100)[1]
            print("Welchen Zufallsgeneratorstart ZZ wuenschen Sie (Default=17)? ZZ=?")
            ZZ<-c(scan(,0,n=1),17)[1]
            set.seed(ZZ)
            x<-rpois(n,lambda)
        }
       )
       assign("x",x,,envir=pos.to.env(match(".GlobalEnv",search())))
               assign("x",x,,envir=revive.env)
   },{ switch(1+menu(c(
                     "Ausschnitt aus x bilden",
                     "Differenzen von x auf x ablegen",
                     "Box-Cox-Transformationen durchfuehren",
                     "Minuten mit Zugriff bei Sekundendaten ermitteln",
                     "Fehlversuche bis Erfolg ermitteln",
                     "Wartezeiten x jenseits x.0 auf x ablegen" ),title="Auswahl: Operation"
          ),{ x<-x
          },{ cat("Entfernung extremer Werte\n")
              x<-remove.extreme.values(x)

          },{ if(all(x==sort(x))) x<-diff(x) else print("x fuer diff ungeeignet!")
          },{
          cat("Statistiken der transformierten Daten\n")
          xtrans<-box.cox.transformation(x)
          print(summary.stats(xtrans))
          print("Wollen Sie das Transformationsergebnis auf x ablegen (j/n)?")
          if(readline()=="j") x<-xtrans
          },{ cat("Aktivitaet pro Minute aus Sekundendaten ermitteln\n")
              x<-(x%%86400)/60
              x<-pmin(1,as.vector(table(cut(x,0:1440))))
          },{ x<-diff((1:length(x))[x==1])-1
          },{ x_x[x>=x.0] - x.0
          }
       )
       assign("x",x,,envir=pos.to.env(match(".GlobalEnv",search())))
               assign("x",x,,envir=revive.env)
   },{     switch(1+menu(c(
                         "Daten anzeigen",
                         "Statistiken berechnen",
                         "horizontale Staebe zeichnen",
                         "Darstellung von Beobachtungen, diskret",
                         "Darstellung von Beobachtungen, kontinuierlich" ),title="Auswahl: Darstellung"
          ),{ x<-x
          },{ cat("Anfang von x anzeigen\n")
              print("Wie viele Werte von x sollen angezeigt werden (Default=100)?")
              print(x[1:c(scan(,0,n=1),min(100,length(x)))[1]])
          },{ cat("Zusammenfassende Statistiken\n")
              print(summary.stats(x))
          },{ cat("Plot von x als Staebe\n")
              h<-length(x)
              plot(c(0,max(x)+1),c(0,h), type="n",xlab="x",ylab="Index")
              segments(0,1:h,x,1:h)
          },{ par(mfrow=c(2,2))
              cat("Jitterplot\n");              jitterplot(x)
              cat("Boxplot\n");              boxplot(x)
              cat("Stabdiagramm\n");              stabdiagramm(x)
              cat("Verteilungsfunktion\n");              F.dach(x)
              par(mfrow=c(1,1))
              cat("Zusammenfassende Statistiken\n");              print(summary.stats(x))
          },{ par(mfrow=c(2,2))
              cat("Jitterplot\n");              jitterplot(x)
              cat("Boxplot\n");              boxplot(x)
              cat("Histogramm\n");              histogramm(x)
              cat("Verteilungsfunktion\n");              F.dach(x)
              par(mfrow=c(1,1))
              cat("Zusammenfassende Statistiken\n")
              print(summary.stats(x))
          }
       )
   },{switch(1+menu(c(
                         "Binomial-Verteilung",
                         "geometrische Verteilung",
                         "Exponentialverteilung",
                         "Poisson-Verteilung",
                         "Normal-Verteilung"
                         ),title="Auswahl: Verteilung"
             ),{ x<-x
             },{ cat("Binomial-Kalkulator\n")
                 binomial.calculator()
             },{ cat("geometrischer Kalkulator\n")
                 geometric.calculator()
             },{ cat("Exponential-Kalkulator\n")
                 exponential.calculator()
             },{ cat("Poisson-Kalkulator\n")
                 poisson.calculator()
             },{ cat("Aktivierung des Normalverteilungskalkulators\n")
                 normal.calculator()
             }
       )
   },{switch(1+menu(c(
                         "geometrische Verteilung",
                         "Exponentialverteilung",
                         "Poisson-Verteilung" ),title="Auswahl: Verteilung"
             ),{ x<-x
             },{ cat("Erkennungsplot fuer geometrische Verteilung\n")
                 print("Plot und Daten aufgrund der Stichprobe")
                 print(geom.p.est(x))

             },{ cat("Exponential-Erkennungsplot\n")
                 print(identify.exp(x))

             },{ cat("Poisson-Erkennungsplot\n")
                 print(identify.pois(x))
             }
       )
   },{ cat("QQ-Plot\n")
       qq.x.model(x)
   },{ cat("Plot der Durchschnitte der ersten k Elemente gegen k\n")
       h<-cumsum(x)/(1:length(x))
       plot(c(1,length(x)),c(max(1,max(h)),min(0,min(h))),
            type="n",xlab="k",ylab="Durchschnitte")
       lines(1:length(x), h)
   },{ interval.est.lambda(x)
   }
    ) # end of switch
    if(abbruch){abbruch<-FALSE;break}
    .Return()
   }   # end of repeat
}      # end of fns

#:111

print("robj: Objekte erfolgreich eingerichtet")

#:1

Try the relax package in your browser

Any scripts or data that you put into this service are public.

relax documentation built on May 30, 2017, 6:30 a.m.