package org.seqcode.deepseq.events; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.seqcode.gseutils.Pair; public class BindingModelPerBase extends BindingModel{ protected double[][] data_pb; protected double[][] probs_pb; protected double[][] logProbs_pb; protected List<Pair<Integer, Double[]>> empiricalDistributionPerBase; //Per base empirical distrib protected Map<Character, Integer> baseToInt; public BindingModelPerBase(File f, int minDist, int maxDist){ super(); initBaseToInt(); min=0; max=0; fileName = f.getName(); try { empiricalDistribution = new LinkedList<Pair<Integer,Double>>(); empiricalDistributionPerBase = new LinkedList<Pair<Integer,Double[]>>(); BufferedReader reader = new BufferedReader(new FileReader(f)); String line; while ((line = reader.readLine()) != null) { line = line.trim(); String[] words = line.split("\\s+"); if(words.length>=5){ Integer dist = new Integer(words[0]); //make sure the current data point is within the specified range if ((dist.intValue() >= minDist) && (dist.intValue() <= maxDist)) { Double[] curr = new Double[4]; for(int w=1; w<=4; w++){ Double val = new Double(words[w]); curr[w-1] = val; } //empiricalDistribution sums over all 4 bases Pair<Integer,Double> p = new Pair<Integer,Double>(dist, curr[0]+curr[1]+curr[2]+curr[3]); if (p.cdr().doubleValue()>=0) // should be non-negative value empiricalDistribution.add(p); else { System.err.println("\nRead distribution file contains negative probability(count) value!"); System.exit(1); } empiricalDistributionPerBase.add(new Pair<Integer, Double[]>(dist, curr)); } } } loadData(empiricalDistribution); loadDataPB(empiricalDistributionPerBase); makeProbabilities(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public BindingModelPerBase(File f) { this(f, Integer.MIN_VALUE, Integer.MAX_VALUE); } public BindingModelPerBase(List<Pair<Integer, Double[]>> bindingDist){ initBaseToInt(); min=0; max=0; empiricalDistributionPerBase=bindingDist; empiricalDistribution = new LinkedList<Pair<Integer,Double>>(); for(Pair<Integer,Double[]> ps : bindingDist){ Pair<Integer,Double> p = new Pair<Integer,Double>(ps.car(), ps.cdr()[0]+ps.cdr()[1]+ps.cdr()[2]+ps.cdr()[3]); empiricalDistribution.add(p); } loadData(empiricalDistribution); loadDataPB(empiricalDistributionPerBase); makeProbabilities(); } //Accessors public double[][] getProbabilitiesPerBase(){ return probs_pb.clone();} public double[][] getLogProbabilitiesPerBase() { return logProbs_pb.clone();} public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } //Simple lookup private void initBaseToInt(){ baseToInt = new HashMap<Character, Integer>(); baseToInt.put('A', 0); baseToInt.put('a', 0); baseToInt.put('C', 1); baseToInt.put('c', 1); baseToInt.put('G', 2); baseToInt.put('g', 2); baseToInt.put('T', 3); baseToInt.put('t', 3); baseToInt.put('N', 0); baseToInt.put('n', 0); } //Load data protected void loadDataPB(List<Pair<Integer, Double[]>> bindingDist){ //Assumes the list is sorted// //Find max, min values first for(Pair<Integer, Double[]> p : bindingDist){ if(p.car()<min) min=p.car(); if(p.car()>max) max=p.car(); } //Initialize arrays data_pb = new double[(max-min)+1][4]; probs_pb = new double[(max-min)+1][4]; logProbs_pb = new double[(max-min)+1][4]; for(int i=0; i<=(max-min); i++){ for(int j=0; j<4; j++){ data_pb[i][j]=0; probs_pb[i][j]=0; logProbs_pb[i][j] = Double.NEGATIVE_INFINITY; } } //Populate the data array (assumes sorted) int last=min-1; for(Pair<Integer, Double[]> p : bindingDist){ int index = p.car(); Double[] vals = p.cdr(); //if list is not properly sorted (need to make this into an exception) if(index-last<0){ System.err.println("Incorrectly sorted binding read distribution data!"); System.exit(1); } for(int v=0; v<4; v++){ //if unevenly spaced, smooth linearly between values if(index-last>1){ double[] lastVals=dataPBVals(last); double step = (vals[v]-lastVals[v])/(double)(index-last); for(int i=1; i<(index-last); i++){ data_pb[(last+i)-min][v]=lastVals[v]+(step*(double)i); } } data_pb[index-min][v]=vals[v]; } last = p.car(); } } //Set a probability landscape according to the data. protected void makeProbabilities(){ super.makeProbabilities();//Call parent method to do everything for the combined empirical distribution double[] totalVals={0,0,0,0}, minProbs={Double.MAX_VALUE,Double.MAX_VALUE,Double.MAX_VALUE,Double.MAX_VALUE}; for(int i=min; i<=max; i++){ for(int v=0; v<4; v++) totalVals[v] += dataPBVals(i)[v]; } for(int i=min; i<=max; i++){ for(int v=0; v<4; v++){ probs_pb[i-min][v] = dataPBVals(i)[v]/totalVals[v]; logProbs_pb[i-min][v] = Math.log(probs_pb[i-min][v])/LOG2; if(probs_pb[i-min][v]<minProbs[v]) minProbs[v] = probs_pb[i-min][v]; } } // update empiricalDistribution with normalized probability List<Pair<Integer, Double[]>> newDist = new ArrayList<Pair<Integer, Double[]>> (); for(int i=min; i<=max; i++){ Double[] newArr = {probability(i, 'A'), probability(i, 'C'), probability(i, 'G'), probability(i, 'T')}; newDist.add(new Pair<Integer, Double[]>(i, newArr)); } empiricalDistributionPerBase=newDist; } /** * Look up the probability corresponding to a distance * @param distance : Distance should be defined as (Read position - Peak position) * @param base : base that defines which component of the read distribution to use * @return */ public double probability(int distance, char base){ int baseIndex = baseToInt.get(base); if(distance<min || distance>max || baseIndex<0 || baseIndex>3){ return(bgProb); }else{ return(probs_pb[distance-min][baseIndex]); } } public double logProbability(int distance, char base) { int baseIndex = baseToInt.get(base); if(distance<min || distance>max || baseIndex<0 || baseIndex>3){ return(logBgProb); }else{ return(logProbs_pb[distance-min][baseIndex]); } } //Look up the data corresponding to a distance public double[] dataPBVals(int distance){ if(distance<min || distance>max){ double[] zeroArray = {0.0, 0.0, 0.0, 0.0}; return(zeroArray); }else{ return(data_pb[distance-min]); } } //Print probs to a file public void printToFile(String filename){ try { FileWriter fout = new FileWriter(filename); for(int i=min; i<=max; i++){ fout.write(i+"\t"+probability(i, 'A')+"\t"+probability(i, 'C')+"\t"+probability(i, 'G')+"\t"+probability(i, 'T')+"\n"); } fout.close(); } catch (IOException e) { e.printStackTrace(); } } public List<Pair<Integer, Double[]>> getEmpiricalPerBaseDistribution() { List<Pair<Integer, Double[]>> newDist = new ArrayList<Pair<Integer, Double[]>> (); for (Pair<Integer, Double[]> p: empiricalDistributionPerBase) newDist.add(p); return newDist; } /** * Generated using MetaMaker pile-ups of human TFIIB permanganate ChIP-seq (Pugh39735hg19) * over initial binding event calls generated by Will Lai. */ @SuppressWarnings("unchecked") public static final List<Pair<Integer, Double[]>> defaultPermChipSeqEmpiricalDistribution = Arrays.asList( new Pair<Integer,Double[]>(-250, new Double[]{0.001931439, 0.001935507, 0.001892218, 0.002146652}), new Pair<Integer,Double[]>(-249, new Double[]{0.001884785, 0.001805877, 0.001697431, 0.002222478}), new Pair<Integer,Double[]>(-248, new Double[]{0.002034075, 0.001899747, 0.001901494, 0.00212835}), new Pair<Integer,Double[]>(-247, new Double[]{0.002183365, 0.001993617, 0.002105556, 0.002034221}), new Pair<Integer,Double[]>(-246, new Double[]{0.002146043, 0.002083017, 0.002087005, 0.002089129}), new Pair<Integer,Double[]>(-245, new Double[]{0.00210872, 0.002172417, 0.002068454, 0.002144037}), new Pair<Integer,Double[]>(-244, new Double[]{0.002192696, 0.002078547, 0.002026714, 0.002031606}), new Pair<Integer,Double[]>(-243, new Double[]{0.002276672, 0.001984677, 0.001984974, 0.001919175}), new Pair<Integer,Double[]>(-242, new Double[]{0.002230019, 0.002060667, 0.002216863, 0.002047295}), new Pair<Integer,Double[]>(-241, new Double[]{0.002183365, 0.002136657, 0.002448752, 0.002175414}), new Pair<Integer,Double[]>(-240, new Double[]{0.00209939, 0.002078547, 0.002258603, 0.001976698}), new Pair<Integer,Double[]>(-239, new Double[]{0.002015414, 0.002020437, 0.002068454, 0.001777982}), new Pair<Integer,Double[]>(-238, new Double[]{0.002118051, 0.001931037, 0.002100919, 0.001981927}), new Pair<Integer,Double[]>(-237, new Double[]{0.002220688, 0.001841637, 0.002133383, 0.002185872}), new Pair<Integer,Double[]>(-236, new Double[]{0.002220688, 0.002083017, 0.002031352, 0.002149267}), new Pair<Integer,Double[]>(-235, new Double[]{0.002220688, 0.002324396, 0.00192932, 0.002112661}), new Pair<Integer,Double[]>(-234, new Double[]{0.00224868, 0.002239467, 0.001892218, 0.002204175}), new Pair<Integer,Double[]>(-233, new Double[]{0.002276672, 0.002154537, 0.001855115, 0.002295689}), new Pair<Integer,Double[]>(-232, new Double[]{0.002220688, 0.002078547, 0.002035989, 0.002204175}), new Pair<Integer,Double[]>(-231, new Double[]{0.002164704, 0.002002557, 0.002216863, 0.002112661}), new Pair<Integer,Double[]>(-230, new Double[]{0.002453954, 0.002060667, 0.002295706, 0.002089129}), new Pair<Integer,Double[]>(-229, new Double[]{0.002743203, 0.002118777, 0.002374548, 0.002065597}), new Pair<Integer,Double[]>(-228, new Double[]{0.002771195, 0.002114307, 0.002309619, 0.002138808}), new Pair<Integer,Double[]>(-227, new Double[]{0.002799186, 0.002109837, 0.00224469, 0.002212019}), new Pair<Integer,Double[]>(-226, new Double[]{0.002687219, 0.002167947, 0.002189037, 0.002157111}), new Pair<Integer,Double[]>(-225, new Double[]{0.002575251, 0.002226056, 0.002133383, 0.002102203}), new Pair<Integer,Double[]>(-224, new Double[]{0.002360647, 0.002261816, 0.002091643, 0.002193717}), new Pair<Integer,Double[]>(-223, new Double[]{0.002146043, 0.002297576, 0.002049903, 0.00228523}), new Pair<Integer,Double[]>(-222, new Double[]{0.002276672, 0.002270756, 0.002300344, 0.002164955}), new Pair<Integer,Double[]>(-221, new Double[]{0.0024073, 0.002243936, 0.002550784, 0.00204468}), new Pair<Integer,Double[]>(-220, new Double[]{0.002388639, 0.002239466, 0.002355997, 0.002021148}), new Pair<Integer,Double[]>(-219, new Double[]{0.002369978, 0.002234996, 0.00216121, 0.001997615}), new Pair<Integer,Double[]>(-218, new Double[]{0.002127382, 0.002284166, 0.002147297, 0.002125735}), new Pair<Integer,Double[]>(-217, new Double[]{0.001884785, 0.002333336, 0.002133383, 0.002253854}), new Pair<Integer,Double[]>(-216, new Double[]{0.001931439, 0.002261817, 0.002133383, 0.00216234}), new Pair<Integer,Double[]>(-215, new Double[]{0.001978092, 0.002190297, 0.002133383, 0.002070826}), new Pair<Integer,Double[]>(-214, new Double[]{0.002258011, 0.002257347, 0.002226139, 0.002112661}), new Pair<Integer,Double[]>(-213, new Double[]{0.002537929, 0.002324396, 0.002318894, 0.002154496}), new Pair<Integer,Double[]>(-212, new Double[]{0.002323325, 0.002355686, 0.002133383, 0.002183258}), new Pair<Integer,Double[]>(-211, new Double[]{0.00210872, 0.002386976, 0.001947871, 0.002212019}), new Pair<Integer,Double[]>(-210, new Double[]{0.002230019, 0.002485316, 0.002128745, 0.002293074}), new Pair<Integer,Double[]>(-209, new Double[]{0.002351317, 0.002583656, 0.002309619, 0.002374129}), new Pair<Integer,Double[]>(-208, new Double[]{0.002463284, 0.002360157, 0.002026714, 0.002311377}), new Pair<Integer,Double[]>(-207, new Double[]{0.002575251, 0.002136657, 0.001743809, 0.002248625}), new Pair<Integer,Double[]>(-206, new Double[]{0.002276672, 0.002150067, 0.001878305, 0.00212312}), new Pair<Integer,Double[]>(-205, new Double[]{0.001978092, 0.002163477, 0.0020128, 0.001997615}), new Pair<Integer,Double[]>(-204, new Double[]{0.00209939, 0.002355687, 0.002133383, 0.002018533}), new Pair<Integer,Double[]>(-203, new Double[]{0.002220688, 0.002547896, 0.002253965, 0.00203945}), new Pair<Integer,Double[]>(-202, new Double[]{0.002080729, 0.002346747, 0.00220295, 0.002157111}), new Pair<Integer,Double[]>(-201, new Double[]{0.001940769, 0.002145597, 0.002151934, 0.002274771}), new Pair<Integer,Double[]>(-200, new Double[]{0.001912777, 0.002194767, 0.002114832, 0.002217249}), new Pair<Integer,Double[]>(-199, new Double[]{0.001884785, 0.002243936, 0.002077729, 0.002159726}), new Pair<Integer,Double[]>(-198, new Double[]{0.002146043, 0.002315456, 0.001984974, 0.00221202}), new Pair<Integer,Double[]>(-197, new Double[]{0.0024073, 0.002386976, 0.001892218, 0.002264313}), new Pair<Integer,Double[]>(-196, new Double[]{0.002276672, 0.002310986, 0.002068454, 0.002198946}), new Pair<Integer,Double[]>(-195, new Double[]{0.002146043, 0.002234996, 0.00224469, 0.002133579}), new Pair<Integer,Double[]>(-194, new Double[]{0.002220688, 0.002239466, 0.002091643, 0.002180643}), new Pair<Integer,Double[]>(-193, new Double[]{0.002295333, 0.002243936, 0.001938596, 0.002227707}), new Pair<Integer,Double[]>(-192, new Double[]{0.001968761, 0.002234996, 0.002096281, 0.002141423}), new Pair<Integer,Double[]>(-191, new Double[]{0.001642189, 0.002226056, 0.002253965, 0.002055138}), new Pair<Integer,Double[]>(-190, new Double[]{0.001847463, 0.002132187, 0.002318894, 0.002002845}), new Pair<Integer,Double[]>(-189, new Double[]{0.002052737, 0.002038317, 0.002383823, 0.001950551}), new Pair<Integer,Double[]>(-188, new Double[]{0.002202027, 0.002243937, 0.002351359, 0.002062983}), new Pair<Integer,Double[]>(-187, new Double[]{0.002351317, 0.002449556, 0.002318894, 0.002175414}), new Pair<Integer,Double[]>(-186, new Double[]{0.002453954, 0.002485316, 0.002346721, 0.002358442}), new Pair<Integer,Double[]>(-185, new Double[]{0.00255659, 0.002521076, 0.002374548, 0.002541469}), new Pair<Integer,Double[]>(-184, new Double[]{0.002174035, 0.002503196, 0.002416288, 0.002321836}), new Pair<Integer,Double[]>(-183, new Double[]{0.001791479, 0.002485316, 0.002458028, 0.002102203}), new Pair<Integer,Double[]>(-182, new Double[]{0.001959431, 0.002364626, 0.002309619, 0.002141423}), new Pair<Integer,Double[]>(-181, new Double[]{0.002127382, 0.002243936, 0.00216121, 0.002180643}), new Pair<Integer,Double[]>(-180, new Double[]{0.001875455, 0.002275226, 0.002337446, 0.002238166}), new Pair<Integer,Double[]>(-179, new Double[]{0.001623528, 0.002306516, 0.002513681, 0.002295689}), new Pair<Integer,Double[]>(-178, new Double[]{0.001996753, 0.002324396, 0.002263241, 0.002225093}), new Pair<Integer,Double[]>(-177, new Double[]{0.002369978, 0.002342276, 0.0020128, 0.002154496}), new Pair<Integer,Double[]>(-176, new Double[]{0.002220688, 0.002395916, 0.002138021, 0.002269542}), new Pair<Integer,Double[]>(-175, new Double[]{0.002071398, 0.002449556, 0.002263241, 0.002384588}), new Pair<Integer,Double[]>(-174, new Double[]{0.001931439, 0.002436146, 0.002184399, 0.002515322}), new Pair<Integer,Double[]>(-173, new Double[]{0.001791479, 0.002422736, 0.002105556, 0.002646056}), new Pair<Integer,Double[]>(-172, new Double[]{0.001875455, 0.002395916, 0.002022076, 0.002449955}), new Pair<Integer,Double[]>(-171, new Double[]{0.00195943, 0.002369096, 0.001938596, 0.002253854}), new Pair<Integer,Double[]>(-170, new Double[]{0.001698173, 0.002284167, 0.002175123, 0.002065597}), new Pair<Integer,Double[]>(-169, new Double[]{0.001436916, 0.002199237, 0.00241165, 0.00187734}), new Pair<Integer,Double[]>(-168, new Double[]{0.001866125, 0.002221587, 0.002277154, 0.001872111}), new Pair<Integer,Double[]>(-167, new Double[]{0.002295333, 0.002243936, 0.002142658, 0.001866881}), new Pair<Integer,Double[]>(-166, new Double[]{0.002407301, 0.002199237, 0.002105556, 0.002159726}), new Pair<Integer,Double[]>(-165, new Double[]{0.002519268, 0.002154537, 0.002068454, 0.00245257}), new Pair<Integer,Double[]>(-164, new Double[]{0.002286003, 0.002199237, 0.00216121, 0.00237413}), new Pair<Integer,Double[]>(-163, new Double[]{0.002052737, 0.002243936, 0.002253965, 0.002295689}), new Pair<Integer,Double[]>(-162, new Double[]{0.001996753, 0.002275226, 0.002388461, 0.002238166}), new Pair<Integer,Double[]>(-161, new Double[]{0.001940769, 0.002306516, 0.002522957, 0.002180643}), new Pair<Integer,Double[]>(-160, new Double[]{0.002090059, 0.002315456, 0.002402375, 0.002175414}), new Pair<Integer,Double[]>(-159, new Double[]{0.002239349, 0.002324396, 0.002281792, 0.002170184}), new Pair<Integer,Double[]>(-158, new Double[]{0.002118051, 0.002270756, 0.002100919, 0.002332295}), new Pair<Integer,Double[]>(-157, new Double[]{0.001996753, 0.002217116, 0.001920045, 0.002494405}), new Pair<Integer,Double[]>(-156, new Double[]{0.002062068, 0.002212647, 0.002063816, 0.002395047}), new Pair<Integer,Double[]>(-155, new Double[]{0.002127382, 0.002208177, 0.002207587, 0.002295689}), new Pair<Integer,Double[]>(-154, new Double[]{0.002034076, 0.002167947, 0.002151934, 0.00224601}), new Pair<Integer,Double[]>(-153, new Double[]{0.001940769, 0.002127717, 0.00209628, 0.002196331}), new Pair<Integer,Double[]>(-152, new Double[]{0.001978092, 0.001975737, 0.00188758, 0.002204175}), new Pair<Integer,Double[]>(-151, new Double[]{0.002015414, 0.001823757, 0.00167888, 0.002212019}), new Pair<Integer,Double[]>(-150, new Double[]{0.002332655, 0.001971267, 0.002017439, 0.00232968}), new Pair<Integer,Double[]>(-149, new Double[]{0.002649896, 0.002118777, 0.002355997, 0.00244734}), new Pair<Integer,Double[]>(-148, new Double[]{0.002472615, 0.002154537, 0.002165848, 0.002198946}), new Pair<Integer,Double[]>(-147, new Double[]{0.002295333, 0.002190297, 0.001975698, 0.001950551}), new Pair<Integer,Double[]>(-146, new Double[]{0.002136713, 0.002279697, 0.002082367, 0.00204468}), new Pair<Integer,Double[]>(-145, new Double[]{0.001978092, 0.002369096, 0.002189036, 0.002138808}), new Pair<Integer,Double[]>(-144, new Double[]{0.001894117, 0.002507666, 0.002142658, 0.002096973}), new Pair<Integer,Double[]>(-143, new Double[]{0.001810141, 0.002646236, 0.00209628, 0.002055138}), new Pair<Integer,Double[]>(-142, new Double[]{0.002015415, 0.002221587, 0.002253965, 0.002128349}), new Pair<Integer,Double[]>(-141, new Double[]{0.002220688, 0.001796937, 0.00241165, 0.00220156}), new Pair<Integer,Double[]>(-140, new Double[]{0.002127382, 0.002056197, 0.002110194, 0.002227707}), new Pair<Integer,Double[]>(-139, new Double[]{0.002034075, 0.002315456, 0.001808738, 0.002253854}), new Pair<Integer,Double[]>(-138, new Double[]{0.002192696, 0.002163477, 0.002049903, 0.002266928}), new Pair<Integer,Double[]>(-137, new Double[]{0.002351317, 0.002011497, 0.002291068, 0.002280001}), new Pair<Integer,Double[]>(-136, new Double[]{0.002015415, 0.002069607, 0.002337446, 0.002130964}), new Pair<Integer,Double[]>(-135, new Double[]{0.001679512, 0.002127717, 0.002383823, 0.001981927}), new Pair<Integer,Double[]>(-134, new Double[]{0.001735496, 0.002141127, 0.002379186, 0.002010689}), new Pair<Integer,Double[]>(-133, new Double[]{0.001791479, 0.002154537, 0.002374548, 0.00203945}), new Pair<Integer,Double[]>(-132, new Double[]{0.001819471, 0.002083017, 0.002393099, 0.002086515}), new Pair<Integer,Double[]>(-131, new Double[]{0.001847463, 0.002011497, 0.00241165, 0.002133579}), new Pair<Integer,Double[]>(-130, new Double[]{0.001940769, 0.002069607, 0.002379186, 0.002235552}), new Pair<Integer,Double[]>(-129, new Double[]{0.002034075, 0.002127717, 0.002346721, 0.002337524}), new Pair<Integer,Double[]>(-128, new Double[]{0.0019501, 0.002069607, 0.002054541, 0.002306148}), new Pair<Integer,Double[]>(-127, new Double[]{0.001866124, 0.002011497, 0.00176236, 0.002274771}), new Pair<Integer,Double[]>(-126, new Double[]{0.001968761, 0.002087487, 0.001859754, 0.002065597}), new Pair<Integer,Double[]>(-125, new Double[]{0.002071398, 0.002163477, 0.001957147, 0.001856423}), new Pair<Integer,Double[]>(-124, new Double[]{0.001959431, 0.002176887, 0.002087005, 0.001919175}), new Pair<Integer,Double[]>(-123, new Double[]{0.001847463, 0.002190297, 0.002216863, 0.001981927}), new Pair<Integer,Double[]>(-122, new Double[]{0.0019501, 0.002248407, 0.002212225, 0.002076056}), new Pair<Integer,Double[]>(-121, new Double[]{0.002052737, 0.002306516, 0.002207587, 0.002170184}), new Pair<Integer,Double[]>(-120, new Double[]{0.00209939, 0.002266286, 0.002175123, 0.002076056}), new Pair<Integer,Double[]>(-119, new Double[]{0.002146043, 0.002226056, 0.002142658, 0.001981927}), new Pair<Integer,Double[]>(-118, new Double[]{0.001819471, 0.002141127, 0.002040627, 0.001911331}), new Pair<Integer,Double[]>(-117, new Double[]{0.001492899, 0.002056197, 0.001938596, 0.001840735}), new Pair<Integer,Double[]>(-116, new Double[]{0.001567544, 0.002190297, 0.001915407, 0.001822432}), new Pair<Integer,Double[]>(-115, new Double[]{0.001642189, 0.002324396, 0.001892218, 0.001804129}), new Pair<Integer,Double[]>(-114, new Double[]{0.001623528, 0.002261817, 0.001998887, 0.001783212}), new Pair<Integer,Double[]>(-113, new Double[]{0.001604867, 0.002199237, 0.002105556, 0.001762294}), new Pair<Integer,Double[]>(-112, new Double[]{0.0019501, 0.002310987, 0.002240052, 0.001817203}), new Pair<Integer,Double[]>(-111, new Double[]{0.002295333, 0.002422736, 0.002374548, 0.001872111}), new Pair<Integer,Double[]>(-110, new Double[]{0.002220688, 0.002150067, 0.002147297, 0.001827662}), new Pair<Integer,Double[]>(-109, new Double[]{0.002146043, 0.001877397, 0.001920045, 0.001783212}), new Pair<Integer,Double[]>(-108, new Double[]{0.00194077, 0.002105367, 0.002054541, 0.001830276}), new Pair<Integer,Double[]>(-107, new Double[]{0.001735496, 0.002333336, 0.002189036, 0.00187734}), new Pair<Integer,Double[]>(-106, new Double[]{0.001856794, 0.002261817, 0.002216863, 0.001832891}), new Pair<Integer,Double[]>(-105, new Double[]{0.001978092, 0.002190297, 0.00224469, 0.001788441}), new Pair<Integer,Double[]>(-104, new Double[]{0.00209006, 0.002221587, 0.002249328, 0.001775368}), new Pair<Integer,Double[]>(-103, new Double[]{0.002202027, 0.002252876, 0.002253965, 0.001762294}), new Pair<Integer,Double[]>(-102, new Double[]{0.002043406, 0.002217117, 0.002230776, 0.001764909}), new Pair<Integer,Double[]>(-101, new Double[]{0.001884785, 0.002181357, 0.002207587, 0.001767524}), new Pair<Integer,Double[]>(-100, new Double[]{0.002006084, 0.002266287, 0.002091643, 0.001725689}), new Pair<Integer,Double[]>(-99, new Double[]{0.002127382, 0.002351216, 0.001975698, 0.001683854}), new Pair<Integer,Double[]>(-98, new Double[]{0.002211358, 0.002275227, 0.00220295, 0.001657707}), new Pair<Integer,Double[]>(-97, new Double[]{0.002295333, 0.002199237, 0.002430201, 0.00163156}), new Pair<Integer,Double[]>(-96, new Double[]{0.002313994, 0.002302047, 0.002388461, 0.001712615}), new Pair<Integer,Double[]>(-95, new Double[]{0.002332655, 0.002404856, 0.002346721, 0.00179367}), new Pair<Integer,Double[]>(-94, new Double[]{0.002183365, 0.002337806, 0.002267879, 0.001762294}), new Pair<Integer,Double[]>(-93, new Double[]{0.002034075, 0.002270756, 0.002189036, 0.001730918}), new Pair<Integer,Double[]>(-92, new Double[]{0.002024745, 0.002310986, 0.002337446, 0.001647249}), new Pair<Integer,Double[]>(-91, new Double[]{0.002015414, 0.002351216, 0.002485855, 0.001563579}), new Pair<Integer,Double[]>(-90, new Double[]{0.002155374, 0.002413796, 0.002490493, 0.001608029}), new Pair<Integer,Double[]>(-89, new Double[]{0.002295333, 0.002476376, 0.00249513, 0.001652478}), new Pair<Integer,Double[]>(-88, new Double[]{0.002006084, 0.002413796, 0.00232817, 0.001749221}), new Pair<Integer,Double[]>(-87, new Double[]{0.001716834, 0.002351216, 0.00216121, 0.001845964}), new Pair<Integer,Double[]>(-86, new Double[]{0.001940769, 0.002230527, 0.002323533, 0.00175968}), new Pair<Integer,Double[]>(-85, new Double[]{0.002164704, 0.002109837, 0.002485855, 0.001673395}), new Pair<Integer,Double[]>(-84, new Double[]{0.002183366, 0.002208177, 0.002629627, 0.001568808}), new Pair<Integer,Double[]>(-83, new Double[]{0.002202027, 0.002306516, 0.002773398, 0.001464221}), new Pair<Integer,Double[]>(-82, new Double[]{0.002286003, 0.002445086, 0.002791949, 0.001605414}), new Pair<Integer,Double[]>(-81, new Double[]{0.002369978, 0.002583656, 0.0028105, 0.001746606}), new Pair<Integer,Double[]>(-80, new Double[]{0.002313994, 0.002449556, 0.00264354, 0.001728304}), new Pair<Integer,Double[]>(-79, new Double[]{0.00225801, 0.002315456, 0.002476579, 0.001710001}), new Pair<Integer,Double[]>(-78, new Double[]{0.00254726, 0.002525546, 0.002778036, 0.001696928}), new Pair<Integer,Double[]>(-77, new Double[]{0.002836509, 0.002735636, 0.003079492, 0.001683854}), new Pair<Integer,Double[]>(-76, new Double[]{0.002985799, 0.002793746, 0.002921807, 0.001806744}), new Pair<Integer,Double[]>(-75, new Double[]{0.003135089, 0.002851855, 0.002764122, 0.001929634}), new Pair<Integer,Double[]>(-74, new Double[]{0.002705881, 0.002887615, 0.002671367, 0.001851194}), new Pair<Integer,Double[]>(-73, new Double[]{0.002276672, 0.002923375, 0.002578611, 0.001772753}), new Pair<Integer,Double[]>(-72, new Double[]{0.002556591, 0.002789276, 0.002903256, 0.001777983}), new Pair<Integer,Double[]>(-71, new Double[]{0.002836509, 0.002655176, 0.003227901, 0.001783212}), new Pair<Integer,Double[]>(-70, new Double[]{0.002799187, 0.002677526, 0.00304239, 0.002000231}), new Pair<Integer,Double[]>(-69, new Double[]{0.002761864, 0.002699876, 0.002856878, 0.002217249}), new Pair<Integer,Double[]>(-68, new Double[]{0.002491276, 0.002941256, 0.00320935, 0.002055139}), new Pair<Integer,Double[]>(-67, new Double[]{0.002220688, 0.003182635, 0.003561822, 0.001893028}), new Pair<Integer,Double[]>(-66, new Double[]{0.002519268, 0.003066415, 0.003274279, 0.001950551}), new Pair<Integer,Double[]>(-65, new Double[]{0.002817848, 0.002950195, 0.002986736, 0.002008074}), new Pair<Integer,Double[]>(-64, new Double[]{0.003060444, 0.003133465, 0.003316019, 0.002081285}), new Pair<Integer,Double[]>(-63, new Double[]{0.00330304, 0.003316735, 0.003645302, 0.002154496}), new Pair<Integer,Double[]>(-62, new Double[]{0.00315375, 0.003289915, 0.003594287, 0.002212019}), new Pair<Integer,Double[]>(-61, new Double[]{0.00300446, 0.003263095, 0.003543271, 0.002269542}), new Pair<Integer,Double[]>(-60, new Double[]{0.002883162, 0.003446365, 0.003659216, 0.002272157}), new Pair<Integer,Double[]>(-59, new Double[]{0.002761864, 0.003629634, 0.00377516, 0.002274771}), new Pair<Integer,Double[]>(-58, new Double[]{0.003013791, 0.003611754, 0.003515444, 0.002293074}), new Pair<Integer,Double[]>(-57, new Double[]{0.003265717, 0.003593874, 0.003255728, 0.002311377}), new Pair<Integer,Double[]>(-56, new Double[]{0.00345233, 0.003660924, 0.003538633, 0.002345368}), new Pair<Integer,Double[]>(-55, new Double[]{0.003638942, 0.003727974, 0.003821538, 0.002379359}), new Pair<Integer,Double[]>(-54, new Double[]{0.003713587, 0.003634104, 0.00377516, 0.002402891}), new Pair<Integer,Double[]>(-53, new Double[]{0.003788232, 0.003540234, 0.003728782, 0.002426423}), new Pair<Integer,Double[]>(-52, new Double[]{0.00376024, 0.003580464, 0.003849365, 0.002520552}), new Pair<Integer,Double[]>(-51, new Double[]{0.003732248, 0.003620694, 0.003969947, 0.00261468}), new Pair<Integer,Double[]>(-50, new Double[]{0.003470991, 0.004036404, 0.003742696, 0.002656515}), new Pair<Integer,Double[]>(-49, new Double[]{0.003209734, 0.004452113, 0.003515444, 0.00269835}), new Pair<Integer,Double[]>(-48, new Double[]{0.003517645, 0.004215204, 0.003798349, 0.002664359}), new Pair<Integer,Double[]>(-47, new Double[]{0.003825555, 0.003978294, 0.004081254, 0.002630368}), new Pair<Integer,Double[]>(-46, new Double[]{0.003638943, 0.004286724, 0.004350246, 0.002706194}), new Pair<Integer,Double[]>(-45, new Double[]{0.00345233, 0.004595153, 0.004619238, 0.002782019}), new Pair<Integer,Double[]>(-44, new Double[]{0.003648273, 0.004380593, 0.004401262, 0.002800322}), new Pair<Integer,Double[]>(-43, new Double[]{0.003844216, 0.004166033, 0.004183285, 0.002818625}), new Pair<Integer,Double[]>(-42, new Double[]{0.003890869, 0.004268843, 0.00438271, 0.002881378}), new Pair<Integer,Double[]>(-41, new Double[]{0.003937522, 0.004371653, 0.004582135, 0.00294413}), new Pair<Integer,Double[]>(-40, new Double[]{0.003918861, 0.004541513, 0.004860403, 0.0030278}), new Pair<Integer,Double[]>(-39, new Double[]{0.0039002, 0.004711373, 0.00513867, 0.003111469}), new Pair<Integer,Double[]>(-38, new Double[]{0.004170788, 0.004836533, 0.004749096, 0.003168992}), new Pair<Integer,Double[]>(-37, new Double[]{0.004441376, 0.004961692, 0.004359521, 0.003226515}), new Pair<Integer,Double[]>(-36, new Double[]{0.004525352, 0.004845473, 0.004800111, 0.003349405}), new Pair<Integer,Double[]>(-35, new Double[]{0.004609327, 0.004729253, 0.005240701, 0.003472295}), new Pair<Integer,Double[]>(-34, new Double[]{0.00465598, 0.005033213, 0.005416937, 0.003885415}), new Pair<Integer,Double[]>(-33, new Double[]{0.004702633, 0.005337172, 0.005593173, 0.004298534}), new Pair<Integer,Double[]>(-32, new Double[]{0.004973221, 0.005207542, 0.005338095, 0.004204406}), new Pair<Integer,Double[]>(-31, new Double[]{0.005243809, 0.005077912, 0.005083016, 0.004110277}), new Pair<Integer,Double[]>(-30, new Double[]{0.005467744, 0.004791833, 0.004855765, 0.003987387}), new Pair<Integer,Double[]>(-29, new Double[]{0.005691679, 0.004505753, 0.004628513, 0.003864497}), new Pair<Integer,Double[]>(-28, new Double[]{0.005868961, 0.004724783, 0.004735182, 0.004233167}), new Pair<Integer,Double[]>(-27, new Double[]{0.006046243, 0.004943812, 0.004841851, 0.004601837}), new Pair<Integer,Double[]>(-26, new Double[]{0.0058503, 0.005256712, 0.005087654, 0.00462014}), new Pair<Integer,Double[]>(-25, new Double[]{0.005654356, 0.005569611, 0.005333457, 0.004638442}), new Pair<Integer,Double[]>(-24, new Double[]{0.005617034, 0.005462332, 0.005486504, 0.004599222}), new Pair<Integer,Double[]>(-23, new Double[]{0.005579711, 0.005355052, 0.005639551, 0.004560002}), new Pair<Integer,Double[]>(-22, new Double[]{0.005691679, 0.005681362, 0.005996661, 0.004557387}), new Pair<Integer,Double[]>(-21, new Double[]{0.005803646, 0.006007671, 0.006353771, 0.004554772}), new Pair<Integer,Double[]>(-20, new Double[]{0.006055573, 0.006280341, 0.006321306, 0.004682892}), new Pair<Integer,Double[]>(-19, new Double[]{0.0063075, 0.00655301, 0.006288841, 0.004811011}), new Pair<Integer,Double[]>(-18, new Double[]{0.006214194, 0.006262461, 0.006771172, 0.005101241}), new Pair<Integer,Double[]>(-17, new Double[]{0.006120888, 0.005971911, 0.007253502, 0.00539147}), new Pair<Integer,Double[]>(-16, new Double[]{0.006260847, 0.0065843, 0.007179297, 0.005849039}), new Pair<Integer,Double[]>(-15, new Double[]{0.006400806, 0.007196689, 0.007105092, 0.006306608}), new Pair<Integer,Double[]>(-14, new Double[]{0.00690466, 0.007880598, 0.007369446, 0.005995461}), new Pair<Integer,Double[]>(-13, new Double[]{0.007408513, 0.008564506, 0.0076338, 0.005684314}), new Pair<Integer,Double[]>(-12, new Double[]{0.006820684, 0.009328875, 0.008162508, 0.005590186}), new Pair<Integer,Double[]>(-11, new Double[]{0.006232855, 0.010093244, 0.008691216, 0.005496057}), new Pair<Integer,Double[]>(-10, new Double[]{0.006428798, 0.010196054, 0.008361933, 0.006604682}), new Pair<Integer,Double[]>(-9, new Double[]{0.006624741, 0.010298864, 0.00803265, 0.007713306}), new Pair<Integer,Double[]>(-8, new Double[]{0.007175248, 0.010204994, 0.007972359, 0.007595645}), new Pair<Integer,Double[]>(-7, new Double[]{0.007725754, 0.010111124, 0.007912068, 0.007477984}), new Pair<Integer,Double[]>(-6, new Double[]{0.008061657, 0.010392734, 0.008283091, 0.008814086}), new Pair<Integer,Double[]>(-5, new Double[]{0.008397559, 0.010674343, 0.008654114, 0.010150187}), new Pair<Integer,Double[]>(-4, new Double[]{0.009629201, 0.010334624, 0.008579909, 0.014521932}), new Pair<Integer,Double[]>(-3, new Double[]{0.010860843, 0.009994904, 0.008505704, 0.018893677}), new Pair<Integer,Double[]>(-2, new Double[]{0.010711553, 0.009726705, 0.007605973, 0.033504508}), new Pair<Integer,Double[]>(-1, new Double[]{0.010562263, 0.009458505, 0.006706242, 0.048115339}), new Pair<Integer,Double[]>(0, new Double[]{0.01021703, 0.008823766, 0.006789723, 0.062433326}), new Pair<Integer,Double[]>(1, new Double[]{0.009871797, 0.008189027, 0.006873203, 0.076751313}), new Pair<Integer,Double[]>(2, new Double[]{0.010319667, 0.008993626, 0.007151471, 0.052860983}), new Pair<Integer,Double[]>(3, new Double[]{0.010767537, 0.009798225, 0.007429738, 0.028970653}), new Pair<Integer,Double[]>(4, new Double[]{0.009937112, 0.009632835, 0.007364809, 0.022010375}), new Pair<Integer,Double[]>(5, new Double[]{0.009106686, 0.009467445, 0.007299879, 0.015050097}), new Pair<Integer,Double[]>(6, new Double[]{0.008621494, 0.008881876, 0.007531769, 0.012210555}), new Pair<Integer,Double[]>(7, new Double[]{0.008136302, 0.008296307, 0.007763658, 0.009371013}), new Pair<Integer,Double[]>(8, new Double[]{0.007716424, 0.008662847, 0.007230313, 0.008991884}), new Pair<Integer,Double[]>(9, new Double[]{0.007296546, 0.009029386, 0.006696967, 0.008612755}), new Pair<Integer,Double[]>(10, new Double[]{0.007147256, 0.008788006, 0.006692329, 0.008338214}), new Pair<Integer,Double[]>(11, new Double[]{0.006997966, 0.008546626, 0.006687691, 0.008063673}), new Pair<Integer,Double[]>(12, new Double[]{0.006624741, 0.008077277, 0.00646044, 0.007415232}), new Pair<Integer,Double[]>(13, new Double[]{0.006251516, 0.007607928, 0.006233188, 0.006766791}), new Pair<Integer,Double[]>(14, new Double[]{0.006242186, 0.007214569, 0.006191448, 0.00690014}), new Pair<Integer,Double[]>(15, new Double[]{0.006232855, 0.006821209, 0.006149708, 0.007033489}), new Pair<Integer,Double[]>(16, new Double[]{0.006055573, 0.00670499, 0.006191448, 0.00665959}), new Pair<Integer,Double[]>(17, new Double[]{0.005878291, 0.00658877, 0.006233188, 0.00628569}), new Pair<Integer,Double[]>(18, new Double[]{0.005523728, 0.006168591, 0.006043039, 0.006003305}), new Pair<Integer,Double[]>(19, new Double[]{0.005169164, 0.005748411, 0.005852889, 0.00572092}), new Pair<Integer,Double[]>(20, new Double[]{0.004963891, 0.005721591, 0.005574622, 0.005412388}), new Pair<Integer,Double[]>(21, new Double[]{0.004758617, 0.005694771, 0.005296355, 0.005103855}), new Pair<Integer,Double[]>(22, new Double[]{0.00464665, 0.005672421, 0.005073741, 0.00477702}), new Pair<Integer,Double[]>(23, new Double[]{0.004534682, 0.005650071, 0.004851127, 0.004450185}), new Pair<Integer,Double[]>(24, new Double[]{0.004544013, 0.005140492, 0.004897505, 0.004363901}), new Pair<Integer,Double[]>(25, new Double[]{0.004553343, 0.004630913, 0.004943883, 0.004277616}), new Pair<Integer,Double[]>(26, new Double[]{0.004861254, 0.004832063, 0.004790836, 0.004089359}), new Pair<Integer,Double[]>(27, new Double[]{0.005169164, 0.005033212, 0.004637789, 0.003901102}), new Pair<Integer,Double[]>(28, new Double[]{0.004637319, 0.004872293, 0.004475466, 0.003796515}), new Pair<Integer,Double[]>(29, new Double[]{0.004105473, 0.004711373, 0.004313143, 0.003691928}), new Pair<Integer,Double[]>(30, new Double[]{0.004226771, 0.004514693, 0.004378073, 0.003793901}), new Pair<Integer,Double[]>(31, new Double[]{0.004348069, 0.004318013, 0.004443002, 0.003895873}), new Pair<Integer,Double[]>(32, new Double[]{0.003928192, 0.004483403, 0.004187924, 0.003903717}), new Pair<Integer,Double[]>(33, new Double[]{0.003508314, 0.004648793, 0.003932845, 0.003911561}), new Pair<Integer,Double[]>(34, new Double[]{0.003676265, 0.004362714, 0.003969947, 0.003710231}), new Pair<Integer,Double[]>(35, new Double[]{0.003844216, 0.004076634, 0.004007049, 0.0035089}), new Pair<Integer,Double[]>(36, new Double[]{0.003909531, 0.004237554, 0.003826176, 0.003289267}), new Pair<Integer,Double[]>(37, new Double[]{0.003974845, 0.004398473, 0.003645302, 0.003069634}), new Pair<Integer,Double[]>(38, new Double[]{0.004133466, 0.004054284, 0.003501531, 0.003087937}), new Pair<Integer,Double[]>(39, new Double[]{0.004292086, 0.003710094, 0.003357759, 0.00310624}), new Pair<Integer,Double[]>(40, new Double[]{0.004264094, 0.003517885, 0.003353121, 0.002996424}), new Pair<Integer,Double[]>(41, new Double[]{0.004236102, 0.003325675, 0.003348483, 0.002886607}), new Pair<Integer,Double[]>(42, new Double[]{0.003788232, 0.003169225, 0.003422688, 0.002740185}), new Pair<Integer,Double[]>(43, new Double[]{0.003340362, 0.003012775, 0.003496893, 0.002593762}), new Pair<Integer,Double[]>(44, new Double[]{0.003405677, 0.003204985, 0.003283555, 0.002494405}), new Pair<Integer,Double[]>(45, new Double[]{0.003470991, 0.003397195, 0.003070216, 0.002395047}), new Pair<Integer,Double[]>(46, new Double[]{0.00314442, 0.003374845, 0.003153697, 0.002612066}), new Pair<Integer,Double[]>(47, new Double[]{0.002817848, 0.003352495, 0.003237177, 0.002829084}), new Pair<Integer,Double[]>(48, new Double[]{0.00269655, 0.003272035, 0.003074854, 0.00245257}), new Pair<Integer,Double[]>(49, new Double[]{0.002575251, 0.003191575, 0.002912531, 0.002076056}), new Pair<Integer,Double[]>(50, new Double[]{0.00270588, 0.003088765, 0.002972823, 0.002209405}), new Pair<Integer,Double[]>(51, new Double[]{0.002836509, 0.002985955, 0.003033114, 0.002342753}), new Pair<Integer,Double[]>(52, new Double[]{0.002603244, 0.002789276, 0.002782674, 0.002449955}), new Pair<Integer,Double[]>(53, new Double[]{0.002369978, 0.002592596, 0.002532233, 0.002557157}), new Pair<Integer,Double[]>(54, new Double[]{0.002556591, 0.002883146, 0.002583249, 0.002392432}), new Pair<Integer,Double[]>(55, new Double[]{0.002743203, 0.003173695, 0.002634264, 0.002227707}), new Pair<Integer,Double[]>(56, new Double[]{0.002388639, 0.002918906, 0.002402375, 0.00212835}), new Pair<Integer,Double[]>(57, new Double[]{0.002034075, 0.002664116, 0.002170485, 0.002028992}), new Pair<Integer,Double[]>(58, new Double[]{0.002537929, 0.002530016, 0.00220295, 0.002034221}), new Pair<Integer,Double[]>(59, new Double[]{0.003041783, 0.002395916, 0.002235414, 0.00203945}), new Pair<Integer,Double[]>(60, new Double[]{0.002677889, 0.002181357, 0.002221501, 0.002047294}), new Pair<Integer,Double[]>(61, new Double[]{0.002313994, 0.001966797, 0.002207587, 0.002055138}), new Pair<Integer,Double[]>(62, new Double[]{0.002313994, 0.002020437, 0.002151934, 0.001976698}), new Pair<Integer,Double[]>(63, new Double[]{0.002313994, 0.002074077, 0.00209628, 0.001898258}), new Pair<Integer,Double[]>(64, new Double[]{0.002379309, 0.002208177, 0.002165847, 0.001919175}), new Pair<Integer,Double[]>(65, new Double[]{0.002444623, 0.002342276, 0.002235414, 0.001940092}), new Pair<Integer,Double[]>(66, new Double[]{0.002304664, 0.002163477, 0.002138021, 0.001806744}), new Pair<Integer,Double[]>(67, new Double[]{0.002164704, 0.001984677, 0.002040627, 0.001673395}), new Pair<Integer,Double[]>(68, new Double[]{0.002239349, 0.002118777, 0.001957147, 0.00167601}), new Pair<Integer,Double[]>(69, new Double[]{0.002313994, 0.002252876, 0.001873667, 0.001678624}), new Pair<Integer,Double[]>(70, new Double[]{0.001922108, 0.002091957, 0.001989612, 0.001652478}), new Pair<Integer,Double[]>(71, new Double[]{0.001530222, 0.001931037, 0.002105556, 0.001626331}), new Pair<Integer,Double[]>(72, new Double[]{0.001483569, 0.001890807, 0.001957147, 0.00155312}), new Pair<Integer,Double[]>(73, new Double[]{0.001436916, 0.001850577, 0.001808738, 0.001479909}), new Pair<Integer,Double[]>(74, new Double[]{0.001819472, 0.001694128, 0.001776274, 0.001506056}), new Pair<Integer,Double[]>(75, new Double[]{0.002202027, 0.001537678, 0.001743809, 0.001532202}), new Pair<Integer,Double[]>(76, new Double[]{0.002024745, 0.001707538, 0.001882943, 0.001474679}), new Pair<Integer,Double[]>(77, new Double[]{0.001847463, 0.001877397, 0.002022076, 0.001417156}), new Pair<Integer,Double[]>(78, new Double[]{0.001772818, 0.001783527, 0.001989612, 0.001404083}), new Pair<Integer,Double[]>(79, new Double[]{0.001698173, 0.001689657, 0.001957147, 0.00139101}), new Pair<Integer,Double[]>(80, new Double[]{0.00165152, 0.001644957, 0.001757722, 0.001323028}), new Pair<Integer,Double[]>(81, new Double[]{0.001604867, 0.001600257, 0.001558297, 0.001255046}), new Pair<Integer,Double[]>(82, new Double[]{0.00150223, 0.001653897, 0.001479455, 0.001291652}), new Pair<Integer,Double[]>(83, new Double[]{0.001399593, 0.001707537, 0.001400612, 0.001328257}), new Pair<Integer,Double[]>(84, new Double[]{0.001520891, 0.001631548, 0.001544384, 0.00126812}), new Pair<Integer,Double[]>(85, new Double[]{0.001642189, 0.001555558, 0.001688155, 0.001207982}), new Pair<Integer,Double[]>(86, new Double[]{0.001567544, 0.001497448, 0.001600037, 0.001247202}), new Pair<Integer,Double[]>(87, new Double[]{0.001492899, 0.001439338, 0.001511919, 0.001286422}), new Pair<Integer,Double[]>(88, new Double[]{0.001371601, 0.001568968, 0.001549022, 0.001236744}), new Pair<Integer,Double[]>(89, new Double[]{0.001250303, 0.001698597, 0.001586124, 0.001187065}), new Pair<Integer,Double[]>(90, new Double[]{0.001296956, 0.001475098, 0.001521195, 0.001129542}), new Pair<Integer,Double[]>(91, new Double[]{0.001343609, 0.001251598, 0.001456266, 0.001072019}), new Pair<Integer,Double[]>(92, new Double[]{0.001287626, 0.001332058, 0.001567573, 0.001103395}), new Pair<Integer,Double[]>(93, new Double[]{0.001231642, 0.001412518, 0.00167888, 0.001134771}), new Pair<Integer,Double[]>(94, new Double[]{0.001240973, 0.001497448, 0.00151192, 0.001163533}), new Pair<Integer,Double[]>(95, new Double[]{0.001250303, 0.001582377, 0.001344959, 0.001192294}), new Pair<Integer,Double[]>(96, new Double[]{0.001334279, 0.001542148, 0.001344959, 0.001171377}), new Pair<Integer,Double[]>(97, new Double[]{0.001418254, 0.001501918, 0.001344959, 0.001150459}), new Pair<Integer,Double[]>(98, new Double[]{0.001446246, 0.001408048, 0.001293943, 0.001147845}), new Pair<Integer,Double[]>(99, new Double[]{0.001474238, 0.001314178, 0.001242927, 0.00114523}), new Pair<Integer,Double[]>(100, new Double[]{0.001446246, 0.001372288, 0.001256841, 0.001121698}), new Pair<Integer,Double[]>(101, new Double[]{0.001418254, 0.001430398, 0.001270754, 0.001098166}), new Pair<Integer,Double[]>(102, new Double[]{0.001390263, 0.001340998, 0.001414526, 0.001074634}), new Pair<Integer,Double[]>(103, new Double[]{0.001362271, 0.001251598, 0.001558297, 0.001051101}), new Pair<Integer,Double[]>(104, new Double[]{0.001455577, 0.001273948, 0.00163714, 0.001181835}), new Pair<Integer,Double[]>(105, new Double[]{0.001548883, 0.001296298, 0.001715982, 0.001312569}), new Pair<Integer,Double[]>(106, new Double[]{0.001390263, 0.001314178, 0.001470179, 0.001200138}), new Pair<Integer,Double[]>(107, new Double[]{0.001231642, 0.001332058, 0.001224376, 0.001087707}), new Pair<Integer,Double[]>(108, new Double[]{0.001315618, 0.001269478, 0.001275392, 0.001090322}), new Pair<Integer,Double[]>(109, new Double[]{0.001399593, 0.001206898, 0.001326408, 0.001092936}), new Pair<Integer,Double[]>(110, new Double[]{0.001306287, 0.001144318, 0.001275392, 0.00110078}), new Pair<Integer,Double[]>(111, new Double[]{0.001212981, 0.001081738, 0.001224376, 0.001108624}), new Pair<Integer,Double[]>(112, new Double[]{0.001362271, 0.001153258, 0.001289305, 0.001032799}), new Pair<Integer,Double[]>(113, new Double[]{0.001511561, 0.001224778, 0.001354234, 0.000956973}), new Pair<Integer,Double[]>(114, new Double[]{0.001399594, 0.001113028, 0.001349597, 0.000962203}), new Pair<Integer,Double[]>(115, new Double[]{0.001287626, 0.001001278, 0.001344959, 0.000967432}), new Pair<Integer,Double[]>(116, new Double[]{0.001278295, 0.001135378, 0.001419164, 0.000975276}), new Pair<Integer,Double[]>(117, new Double[]{0.001268964, 0.001269478, 0.001493368, 0.00098312}), new Pair<Integer,Double[]>(118, new Double[]{0.001184989, 0.001385698, 0.001252203, 0.001011882}), new Pair<Integer,Double[]>(119, new Double[]{0.001101013, 0.001501918, 0.001011038, 0.001040643}), new Pair<Integer,Double[]>(120, new Double[]{0.001129005, 0.001443808, 0.001187274, 0.00106156}), new Pair<Integer,Double[]>(121, new Double[]{0.001156997, 0.001385698, 0.00136351, 0.001082477}), new Pair<Integer,Double[]>(122, new Double[]{0.001259634, 0.001305238, 0.001326408, 0.001048487}), new Pair<Integer,Double[]>(123, new Double[]{0.001362271, 0.001224778, 0.001289305, 0.001014496}), new Pair<Integer,Double[]>(124, new Double[]{0.001147667, 0.001251598, 0.001382061, 0.001004037}), new Pair<Integer,Double[]>(125, new Double[]{0.000933062, 0.001278418, 0.001474817, 0.000993578}), new Pair<Integer,Double[]>(126, new Double[]{0.001110344, 0.001256068, 0.001423801, 0.000970046}), new Pair<Integer,Double[]>(127, new Double[]{0.001287626, 0.001233718, 0.001372785, 0.000946514}), new Pair<Integer,Double[]>(128, new Double[]{0.001296957, 0.001162198, 0.001317132, 0.000907294}), new Pair<Integer,Double[]>(129, new Double[]{0.001306287, 0.001090678, 0.001261479, 0.000868074}), new Pair<Integer,Double[]>(130, new Double[]{0.00134361, 0.001144318, 0.001270755, 0.000959588}), new Pair<Integer,Double[]>(131, new Double[]{0.001380932, 0.001197958, 0.00128003, 0.001051101}), new Pair<Integer,Double[]>(132, new Double[]{0.001296957, 0.001256068, 0.001307857, 0.001051101}), new Pair<Integer,Double[]>(133, new Double[]{0.001212981, 0.001314178, 0.001335683, 0.001051101}), new Pair<Integer,Double[]>(134, new Double[]{0.001147667, 0.001291828, 0.001377423, 0.000922982}), new Pair<Integer,Double[]>(135, new Double[]{0.001082352, 0.001269478, 0.001419163, 0.000794863}), new Pair<Integer,Double[]>(136, new Double[]{0.001156997, 0.001162198, 0.001331045, 0.000779175}), new Pair<Integer,Double[]>(137, new Double[]{0.001231642, 0.001054918, 0.001242927, 0.000763487}), new Pair<Integer,Double[]>(138, new Double[]{0.001259634, 0.001081738, 0.001400612, 0.000985735}), new Pair<Integer,Double[]>(139, new Double[]{0.001287626, 0.001108558, 0.001558297, 0.001207982}), new Pair<Integer,Double[]>(140, new Double[]{0.001203651, 0.000983399, 0.001451628, 0.001004037}), new Pair<Integer,Double[]>(141, new Double[]{0.001119675, 0.000858239, 0.001344959, 0.000800092}), new Pair<Integer,Double[]>(142, new Double[]{0.001147667, 0.000983399, 0.001252203, 0.000891606}), new Pair<Integer,Double[]>(143, new Double[]{0.001175658, 0.001108558, 0.001159447, 0.00098312}), new Pair<Integer,Double[]>(144, new Double[]{0.001259634, 0.001054918, 0.00119655, 0.000954359}), new Pair<Integer,Double[]>(145, new Double[]{0.001343609, 0.001001278, 0.001233652, 0.000925597}), new Pair<Integer,Double[]>(146, new Double[]{0.001390263, 0.001045978, 0.001229014, 0.000936056}), new Pair<Integer,Double[]>(147, new Double[]{0.001436916, 0.001090678, 0.001224376, 0.000946514}), new Pair<Integer,Double[]>(148, new Double[]{0.001287626, 0.001144318, 0.001177998, 0.000826239}), new Pair<Integer,Double[]>(149, new Double[]{0.001138336, 0.001197958, 0.00113162, 0.000705964}), new Pair<Integer,Double[]>(150, new Double[]{0.00119432, 0.001206898, 0.00104814, 0.000779175}), new Pair<Integer,Double[]>(151, new Double[]{0.001250303, 0.001215838, 0.00096466, 0.000852386}), new Pair<Integer,Double[]>(152, new Double[]{0.001250303, 0.001175608, 0.001103794, 0.000849771}), new Pair<Integer,Double[]>(153, new Double[]{0.001250303, 0.001135378, 0.001242927, 0.000847156}), new Pair<Integer,Double[]>(154, new Double[]{0.001315618, 0.001108558, 0.001164085, 0.00086023}), new Pair<Integer,Double[]>(155, new Double[]{0.001380932, 0.001081738, 0.001085243, 0.000873303}), new Pair<Integer,Double[]>(156, new Double[]{0.00135294, 0.001171138, 0.001057416, 0.000857615}), new Pair<Integer,Double[]>(157, new Double[]{0.001324948, 0.001260538, 0.001029589, 0.000841927}), new Pair<Integer,Double[]>(158, new Double[]{0.00135294, 0.001211368, 0.001131621, 0.000881147}), new Pair<Integer,Double[]>(159, new Double[]{0.001380932, 0.001162198, 0.001233652, 0.000920367}), new Pair<Integer,Double[]>(160, new Double[]{0.001147667, 0.001104088, 0.00123829, 0.000886377}), new Pair<Integer,Double[]>(161, new Double[]{0.000914401, 0.001045978, 0.001242927, 0.000852386}), new Pair<Integer,Double[]>(162, new Double[]{0.000998377, 0.001117498, 0.001145534, 0.000870689}), new Pair<Integer,Double[]>(163, new Double[]{0.001082352, 0.001189018, 0.00104814, 0.000888991}), new Pair<Integer,Double[]>(164, new Double[]{0.001212981, 0.001287358, 0.001131621, 0.00093867}), new Pair<Integer,Double[]>(165, new Double[]{0.001343609, 0.001385698, 0.001215101, 0.000988349}), new Pair<Integer,Double[]>(166, new Double[]{0.001250303, 0.001336528, 0.001284668, 0.00093867}), new Pair<Integer,Double[]>(167, new Double[]{0.001156997, 0.001287358, 0.001354234, 0.000888991}), new Pair<Integer,Double[]>(168, new Double[]{0.001240973, 0.001144318, 0.001224376, 0.000920367}), new Pair<Integer,Double[]>(169, new Double[]{0.001324948, 0.001001278, 0.001094518, 0.000951743}), new Pair<Integer,Double[]>(170, new Double[]{0.001212981, 0.001050448, 0.00123829, 0.000907294}), new Pair<Integer,Double[]>(171, new Double[]{0.001101013, 0.001099618, 0.001382061, 0.000862844}), new Pair<Integer,Double[]>(172, new Double[]{0.001082352, 0.001032568, 0.00136351, 0.000855}), new Pair<Integer,Double[]>(173, new Double[]{0.001063691, 0.000965518, 0.001344959, 0.000847156}), new Pair<Integer,Double[]>(174, new Double[]{0.000961054, 0.000943169, 0.001386699, 0.000865459}), new Pair<Integer,Double[]>(175, new Double[]{0.000858417, 0.000920819, 0.001428439, 0.000883762}), new Pair<Integer,Double[]>(176, new Double[]{0.001101013, 0.001005749, 0.001229014, 0.000847157}), new Pair<Integer,Double[]>(177, new Double[]{0.001343609, 0.001090678, 0.001029589, 0.000810551}), new Pair<Integer,Double[]>(178, new Double[]{0.001259634, 0.001121968, 0.00119655, 0.00086023}), new Pair<Integer,Double[]>(179, new Double[]{0.001175658, 0.001153258, 0.00136351, 0.000909909}), new Pair<Integer,Double[]>(180, new Double[]{0.001166328, 0.001104088, 0.001391337, 0.000954359}), new Pair<Integer,Double[]>(181, new Double[]{0.001156997, 0.001054918, 0.001419163, 0.000998808}), new Pair<Integer,Double[]>(182, new Double[]{0.001026369, 0.001037038, 0.001428439, 0.000917753}), new Pair<Integer,Double[]>(183, new Double[]{0.00089574, 0.001019158, 0.001437714, 0.000836698}), new Pair<Integer,Double[]>(184, new Double[]{0.001017038, 0.000969989, 0.001303219, 0.00086023}), new Pair<Integer,Double[]>(185, new Double[]{0.001138336, 0.000920819, 0.001168723, 0.000883762}), new Pair<Integer,Double[]>(186, new Double[]{0.001296957, 0.001265008, 0.001247566, 0.000990964}), new Pair<Integer,Double[]>(187, new Double[]{0.001455577, 0.001609197, 0.001326408, 0.001098166}), new Pair<Integer,Double[]>(188, new Double[]{0.001436916, 0.001408048, 0.001233652, 0.000964817}), new Pair<Integer,Double[]>(189, new Double[]{0.001418254, 0.001206898, 0.001140896, 0.000831468}), new Pair<Integer,Double[]>(190, new Double[]{0.00135294, 0.001099618, 0.001187274, 0.000805322}), new Pair<Integer,Double[]>(191, new Double[]{0.001287626, 0.000992338, 0.001233652, 0.000779175}), new Pair<Integer,Double[]>(192, new Double[]{0.001268965, 0.001037038, 0.001303219, 0.000818395}), new Pair<Integer,Double[]>(193, new Double[]{0.001250303, 0.001081738, 0.001372785, 0.000857615}), new Pair<Integer,Double[]>(194, new Double[]{0.001166328, 0.001166668, 0.00144699, 0.000868074}), new Pair<Integer,Double[]>(195, new Double[]{0.001082352, 0.001251598, 0.001521195, 0.000878532}), new Pair<Integer,Double[]>(196, new Double[]{0.001212981, 0.001166668, 0.001479455, 0.000988349}), new Pair<Integer,Double[]>(197, new Double[]{0.001343609, 0.001081738, 0.001437714, 0.001098166}), new Pair<Integer,Double[]>(198, new Double[]{0.001296956, 0.001095148, 0.001340321, 0.001064175}), new Pair<Integer,Double[]>(199, new Double[]{0.001250303, 0.001108558, 0.001242927, 0.001030184}), new Pair<Integer,Double[]>(200, new Double[]{0.001259634, 0.001054918, 0.001284668, 0.001095551}), new Pair<Integer,Double[]>(201, new Double[]{0.001268964, 0.001001278, 0.001326408, 0.001160918}), new Pair<Integer,Double[]>(202, new Double[]{0.001511561, 0.000956579, 0.00115481, 0.001103395}), new Pair<Integer,Double[]>(203, new Double[]{0.001754157, 0.000911879, 0.000983211, 0.001045872}), new Pair<Integer,Double[]>(204, new Double[]{0.001511561, 0.001269478, 0.001136258, 0.000962202}), new Pair<Integer,Double[]>(205, new Double[]{0.001268964, 0.001627077, 0.001289305, 0.000878532}), new Pair<Integer,Double[]>(206, new Double[]{0.001212981, 0.001412518, 0.00123829, 0.000902065}), new Pair<Integer,Double[]>(207, new Double[]{0.001156997, 0.001197958, 0.001187274, 0.000925597}), new Pair<Integer,Double[]>(208, new Double[]{0.001240973, 0.001175608, 0.001252203, 0.000980505}), new Pair<Integer,Double[]>(209, new Double[]{0.001324948, 0.001153258, 0.001317132, 0.001035413}), new Pair<Integer,Double[]>(210, new Double[]{0.001231642, 0.001135378, 0.001419164, 0.001045872}), new Pair<Integer,Double[]>(211, new Double[]{0.001138336, 0.001117498, 0.001521195, 0.001056331}), new Pair<Integer,Double[]>(212, new Double[]{0.00119432, 0.001095148, 0.001442353, 0.00106679}), new Pair<Integer,Double[]>(213, new Double[]{0.001250303, 0.001072798, 0.00136351, 0.001077248}), new Pair<Integer,Double[]>(214, new Double[]{0.001184989, 0.001126438, 0.001382061, 0.001103395}), new Pair<Integer,Double[]>(215, new Double[]{0.001119675, 0.001180078, 0.001400612, 0.001129542}), new Pair<Integer,Double[]>(216, new Double[]{0.001063691, 0.001184548, 0.001470179, 0.001121698}), new Pair<Integer,Double[]>(217, new Double[]{0.001007707, 0.001189018, 0.001539746, 0.001113854}), new Pair<Integer,Double[]>(218, new Double[]{0.001101014, 0.001238188, 0.001442353, 0.001129542}), new Pair<Integer,Double[]>(219, new Double[]{0.00119432, 0.001287358, 0.001344959, 0.00114523}), new Pair<Integer,Double[]>(220, new Double[]{0.001287626, 0.001269478, 0.001326408, 0.001087707}), new Pair<Integer,Double[]>(221, new Double[]{0.001380932, 0.001251598, 0.001307856, 0.001030184}), new Pair<Integer,Double[]>(222, new Double[]{0.001362271, 0.001269478, 0.001354234, 0.000954358}), new Pair<Integer,Double[]>(223, new Double[]{0.001343609, 0.001287358, 0.001400612, 0.000878532}), new Pair<Integer,Double[]>(224, new Double[]{0.001138336, 0.001184548, 0.001386699, 0.000933441}), new Pair<Integer,Double[]>(225, new Double[]{0.000933062, 0.001081738, 0.001372785, 0.000988349}), new Pair<Integer,Double[]>(226, new Double[]{0.001119675, 0.001135378, 0.001368148, 0.001121698}), new Pair<Integer,Double[]>(227, new Double[]{0.001306287, 0.001189018, 0.00136351, 0.001255046}), new Pair<Integer,Double[]>(228, new Double[]{0.001278295, 0.001197958, 0.001372786, 0.001092936}), new Pair<Integer,Double[]>(229, new Double[]{0.001250303, 0.001206898, 0.001382061, 0.000930826}), new Pair<Integer,Double[]>(230, new Double[]{0.001101013, 0.001175608, 0.001349597, 0.000977891}), new Pair<Integer,Double[]>(231, new Double[]{0.000951723, 0.001144318, 0.001317132, 0.001024955}), new Pair<Integer,Double[]>(232, new Double[]{0.000942393, 0.001166668, 0.001270754, 0.000941285}), new Pair<Integer,Double[]>(233, new Double[]{0.000933062, 0.001189018, 0.001224376, 0.000857615}), new Pair<Integer,Double[]>(234, new Double[]{0.001035699, 0.001265008, 0.001145534, 0.00089945}), new Pair<Integer,Double[]>(235, new Double[]{0.001138336, 0.001340998, 0.001066691, 0.000941285}), new Pair<Integer,Double[]>(236, new Double[]{0.001119675, 0.001399108, 0.001201187, 0.001017111}), new Pair<Integer,Double[]>(237, new Double[]{0.001101013, 0.001457218, 0.001335683, 0.001092936}), new Pair<Integer,Double[]>(238, new Double[]{0.001268965, 0.001390168, 0.00128003, 0.001082478}), new Pair<Integer,Double[]>(239, new Double[]{0.001436916, 0.001323118, 0.001224376, 0.001072019}), new Pair<Integer,Double[]>(240, new Double[]{0.001212981, 0.001336528, 0.001284668, 0.000964817}), new Pair<Integer,Double[]>(241, new Double[]{0.000989046, 0.001349938, 0.001344959, 0.000857615}), new Pair<Integer,Double[]>(242, new Double[]{0.001250304, 0.001197958, 0.001409888, 0.000985735}), new Pair<Integer,Double[]>(243, new Double[]{0.001511561, 0.001045978, 0.001474817, 0.001113854}), new Pair<Integer,Double[]>(244, new Double[]{0.00150223, 0.001251598, 0.001303219, 0.000996193}), new Pair<Integer,Double[]>(245, new Double[]{0.001492899, 0.001457218, 0.00113162, 0.000878532}), new Pair<Integer,Double[]>(246, new Double[]{0.001073021, 0.001323118, 0.001247565, 0.001027569}), new Pair<Integer,Double[]>(247, new Double[]{0.000653143, 0.001189018, 0.00136351, 0.001176606}), new Pair<Integer,Double[]>(248, new Double[]{0.000811764, 0.001180078, 0.001317132, 0.00110601}), new Pair<Integer,Double[]>(249, new Double[]{0.000970385, 0.001171138, 0.001270754, 0.001035413}), new Pair<Integer,Double[]>(250, new Double[]{0.001231642, 0.001166668, 0.001219739, 0.000985734})); }