Data clustering with the DBSCAN (density-based spatial clustering of applications with noise) algorithm can be easily used to identify anomalous data items. DBSCAN clustering assigns each data item of the source data to a cluster ID, except for data items that are not near other items. Those far-away items are labeled with -1, indicating “noise” — these are anomalous items.
DBSCAN clustering uses Euclidean distance between data items and so the implication is that DBSCAN applies only to strictly numeric data. But I’ve been experimenting with an encoding technique for categorical data that I call one-over-n-hot encoding. For example, if a data column Color has three possible values, then one-over-n-hot encoding is red = (0.3333, 0, 0), blue = (0, 0.3333, 0), green = (0, 0, 0.3333).
For categorical items that have an inherent ordering, I use equal-interval encoding. For example, for Height, short = 0.25, medium = 0.50, tall = 0.75.
I put together a demo using the C# language. I made a 240-item set of synthetic data that looks like:
F short 24 arkansas 29500 liberal M tall 39 delaware 51200 moderate F short 63 colorado 75800 conservative M medium 36 illinois 44500 moderate F short 27 colorado 28600 liberal . . .
Each line represents a person. The fields are sex, height, age, State, income, political leaning.
I used min-max normalization on the age (min = 18, max = 68) and income (min = $20,300, max = $81,800) columns. I used one-over-n-hot encoding on the sex, State, and political leaning columns. I used equal-interval encoding for the height column.
The resulting normalized and encoded data looks like:
0.5, 0.25, 0.1200, 0.25, 0.00, 0.00, 0.00, 0.1496, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.4200, 0.00, 0.00, 0.25, 0.00, 0.5024, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.9000, 0.00, 0.25, 0.00, 0.00, 0.9024, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.3600, 0.00, 0.00, 0.00, 0.25, 0.3935, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.1800, 0.00, 0.25, 0.00, 0.00, 0.1350, 0.0000, 0.0000, 0.3333
. . .
When using DBSCAN clustering, you don’t explicitly specify the number of clusters. Instead, you specify an epsilon value and a min_points value. These implicitly determine the resulting number of clusters. DBSCAN clustering is extremely sensitive to the values of epsilon and min_points. After a lot of trial and error, I used epsilon = 0.4790 and min_points = 24.
The result was three clusters, plus 12 anomalous items in the noise cluster. Each noise item is examined by counting the number of data items that are less than the epsilon value (near neighbors):
number clusters = 3
cluster counts
0 : 116
1 : 89
2 : 23
number noise items = 12
[ 17] : F tall 25 delaware 30000 moderate : near neighbors = 1
[ 50] : M tall 36 illinois 53500 conservative : near neighbors = 8
[ 58] : M tall 50 illinois 62900 conservative : near neighbors = 3
[ 75] : F short 26 colorado 40400 conservative : near neighbors = 3
[ 124] : F tall 29 colorado 37100 conservative : near neighbors = 0
[ 169] : M short 44 delaware 63000 conservative : near neighbors = 3
[ 170] : M tall 65 delaware 81800 conservative : near neighbors = 1
[ 175] : F medium 68 arkansas 72600 liberal : near neighbors = 0
[ 226] : M tall 65 arkansas 76900 conservative : near neighbors = 3
[ 227] : M short 46 colorado 58000 conservative : near neighbors = 6
[ 229] : M short 47 arkansas 63600 conservative : near neighbors = 5
[ 232] : M medium 20 arkansas 28700 liberal : near neighbors = 1
In this example, the most anomalous data items are [124] and [175] because they have zero near neighbors. The next most anomalous data items are [17], [170], [232] because they have only one near neighbor. And so on. In a non-demo scenario, the anomalous data items would be examined closely to try and determine why they’re anomalous.
Two other clustering-based anomaly detection techniques are k-means clustering anomaly detection and self-organizing maps clustering anomaly detection. I suspect that the three clustering anomaly techniques give different results, but I haven’t explored this question thoroughly.
I loved the “Freddy the Pig” series of books when I was a young man. Freddy is the lead character in 26 books written between 1927 and 1958 by Walter R. Brooks with illustrations by Kurt Wiese. The books focus on the adventures of a group of animals living on a rural farm. The animals can talk to each other and humans — an anomaly that is remarked upon by humans but never really questioned other than a comment like, “The animals can talk — that’s odd.”
#26 Freddy and the Dragon (1958) – Freddy and his sidekick, Jinx the cat, defeat a gang of criminals, and help a traveling circus.
#3 Freddy the Detective (1932) – Freddy and his friends solve a series of mysterious crimes on the Bean family farm — Simon the rat and his gang are the culprits. The first one of the series I read and so it has a special place in my memory.
#14 Freddy the Magician (1947) – Freddy and his farmyard friends deal with Zingo, a criminal magician.
Demo code. Replace “lt” (less than), “gt”, “lte”, “gte”, “and” with Boolean operator symbols.
using System; using System.IO; using System.Collections.Generic; namespace AnomalyDBSCAN { internal class AnomalyDBSCANProgram { static void Main(string[] args) { Console.WriteLine("\nBegin anomaly detection" + " using DBSCAN clustering "); // 1. load data Console.WriteLine("\nLoading 240-item" + " synthetic People subset "); string rf = "..\\..\\..\\Data\\people_raw.txt"; string[] rawFileArray = AnomalyDBSCAN.FileLoad(rf, "#"); Console.WriteLine("\nFirst three rows" + " of raw data: "); for (int i = 0; i "lt" 3; ++i) Console.WriteLine("[" + i.ToString(). PadLeft(3) + "] " + rawFileArray[i]); string fn = "..\\..\\..\\Data\\people_240.txt"; double[][] X = AnomalyDBSCAN.MatLoad(fn, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, ',', "#"); Console.WriteLine("\nFirst three rows" + " of normalized and encoded data: "); AnomalyDBSCAN.MatShow(X, 4, 8, 3, true); // 2. create AnomalyDBSCAN object and cluster double epsilon = 0.479; int minPoints = 24; // 4 noise Console.WriteLine("\nSetting epsilon = " + epsilon.ToString("F4")); Console.WriteLine("Setting minPoints = " + minPoints); Console.WriteLine("\nClustering with DBSCAN "); AnomalyDBSCAN dbscan = new AnomalyDBSCAN(epsilon, minPoints); int[] clustering = dbscan.Cluster(X); Console.WriteLine("Done "); // Console.WriteLine("\nClustering results: "); // AnomalyDBSCAN.VecShow(clustering, 4); Console.WriteLine("\nAnalyzing"); dbscan.Analyze(rawFileArray); Console.WriteLine("\nEnd demo "); Console.ReadLine(); } // Main } // Program public class AnomalyDBSCAN { public double eps; public int minPts; public double[][] data; // supplied in cluster() public int[] labels; // supplied in cluster() public AnomalyDBSCAN(double eps, int minPts) { this.eps = eps; this.minPts = minPts; } public void Analyze(string[] rawFileArray) { // assumes Cluster() has been called so that // this.labels[] is computed int maxClusterID = -1; int numNoise = 0; for (int i = 0; i "lt" this.labels.Length; ++i) { if (this.labels[i] == -1) { ++numNoise; } if (this.labels[i] "gt" maxClusterID) { maxClusterID = this.labels[i]; } } int numClusters = maxClusterID + 1; Console.WriteLine("\nnumber clusters = " + numClusters); int[] clusterCounts = new int[numClusters]; for (int i = 0; i "lt" this.labels.Length; ++i) { int clusterID = this.labels[i]; if (clusterID != -1) ++clusterCounts[clusterID]; } Console.WriteLine("\ncluster counts "); for (int cid = 0; cid "lt" clusterCounts.Length; ++cid) { Console.WriteLine(cid + " : " + clusterCounts[cid]); } Console.WriteLine("\nnumber noise items = " + numNoise + "\n"); for (int i = 0; i "lt" this.labels.Length; ++i) { if (this.labels[i] == -1) // noise { Console.Write("[" + i.ToString(). PadLeft(4) + "] : " + rawFileArray[i].ToString(). PadRight(46)); // associated raw data double[] distances = new double[this.data.Length]; int countLessThanEpsilon = 0; for (int j = 0; j "lt" this.data.Length; ++j) { distances[j] = AnomalyDBSCAN.EucDistance(this.data[i], this.data[j]); if (j != i "and" distances[j] "lt" this.eps) { ++countLessThanEpsilon; } } Console.WriteLine(" : near neighbors = " + countLessThanEpsilon); } // noise item } // i } // Analyze() public int[] Cluster(double[][] data) { this.data = data; // by reference this.labels = new int[this.data.Length]; for (int i = 0; i "lt" labels.Length; ++i) this.labels[i] = -2; // unprocessed int cid = -1; // offset the start for (int i = 0; i "lt" this.data.Length; ++i) { if (this.labels[i] != -2) continue; // item has been processed List"lt"int"gt" neighbors = this.RegionQuery(i); if (neighbors.Count "lt" this.minPts) { this.labels[i] = -1; // noise } else { ++cid; this.Expand(i, neighbors, cid); } } return this.labels; } private List"lt"int"gt" RegionQuery(int p) { // List of idxs close to data[p] List"lt"int"gt" result = new List"lt"int"gt"(); for (int i = 0; i "lt" this.data.Length; ++i) { double dist = EucDistance(this.data[p], this.data[i]); if (dist "lt" this.eps) result.Add(i); } return result; } private void Expand(int p, List"lt"int"gt" neighbors, int cid) { this.labels[p] = cid; //int i = 0; //while(i "lt" neighbors.Count) for (int i = 0; i "lt" neighbors.Count; ++i) { int pn = neighbors[i]; if (this.labels[pn] == -1) // noise this.labels[pn] = cid; else if (this.labels[pn] == -2) // unprocessed { this.labels[pn] = cid; List"lt"int"gt" newNeighbors = this.RegionQuery(pn); // loop is modified! if (newNeighbors.Count "gte" this.minPts) neighbors.AddRange(newNeighbors); } //++i; } } private static double EucDistance(double[] x1, double[] x2) { int dim = x1.Length; double sum = 0.0; for (int i = 0; i "lt" dim; ++i) sum += (x1[i] - x2[i]) * (x1[i] - x2[i]); return Math.Sqrt(sum); } // ------------------------------------------------------ // misc. public utility functions for convenience // MatLoad(), FileLoad, VecLoad(), MatShow(), // VecShow(), ListShow() // ------------------------------------------------------ public static double[][] MatLoad(string fn, int[] usecols, char sep, string comment) { // count number of non-comment lines int nRows = 0; string line = ""; FileStream ifs = new FileStream(fn, FileMode.Open); StreamReader sr = new StreamReader(ifs); while ((line = sr.ReadLine()) != null) if (line.StartsWith(comment) == false) ++nRows; sr.Close(); ifs.Close(); // make result matrix int nCols = usecols.Length; double[][] result = new double[nRows][]; for (int r = 0; r "lt" nRows; ++r) result[r] = new double[nCols]; line = ""; string[] tokens = null; ifs = new FileStream(fn, FileMode.Open); sr = new StreamReader(ifs); int i = 0; while ((line = sr.ReadLine()) != null) { if (line.StartsWith(comment) == true) continue; tokens = line.Split(sep); for (int j = 0; j "lt" nCols; ++j) { int k = usecols[j]; // into tokens result[i][j] = double.Parse(tokens[k]); } ++i; } sr.Close(); ifs.Close(); return result; } // ------------------------------------------------------ public static string[] FileLoad(string fn, string comment) { List"lt"string"gt" lst = new List"lt"string"gt"(); FileStream ifs = new FileStream(fn, FileMode.Open); StreamReader sr = new StreamReader(ifs); string line = ""; while ((line = sr.ReadLine()) != null) { if (line.StartsWith(comment)) continue; line = line.Trim(); lst.Add(line); } sr.Close(); ifs.Close(); string[] result = lst.ToArray(); return result; } // ------------------------------------------------------ public static int[] VecLoad(string fn, int usecol, string comment) { char dummySep = ','; double[][] tmp = MatLoad(fn, new int[] { usecol }, dummySep, comment); int n = tmp.Length; int[] result = new int[n]; for (int i = 0; i "lt" n; ++i) result[i] = (int)tmp[i][0]; return result; } // ------------------------------------------------------ public static void MatShow(double[][] M, int dec, int wid, int numRows, bool showIndices) { double small = 1.0 / Math.Pow(10, dec); for (int i = 0; i "lt" numRows; ++i) { if (showIndices == true) { int pad = M.Length.ToString().Length; Console.Write("[" + i.ToString(). PadLeft(pad) + "]"); } for (int j = 0; j "lt" M[0].Length; ++j) { double v = M[i][j]; if (Math.Abs(v) "lt" small) v = 0.0; Console.Write(v.ToString("F" + dec). PadLeft(wid)); } Console.WriteLine(""); } if (numRows "lt" M.Length) Console.WriteLine(". . . "); } // ------------------------------------------------------ public static void VecShow(int[] vec, int wid) { int n = vec.Length; for (int i = 0; i "lt" n; ++i) { if (i "gt" 0 "and" i % 20 == 0) Console.WriteLine(""); Console.Write(vec[i].ToString().PadLeft(wid)); } Console.WriteLine(""); } // ------------------------------------------------------ public static void VecShow(double[] vec, int decimals, int wid) { int n = vec.Length; for (int i = 0; i "lt" n; ++i) Console.Write(vec[i].ToString("F" + decimals). PadLeft(wid)); Console.WriteLine(""); } // ------------------------------------------------------ public static void ListShow(List"lt"int"gt" lst) { int n = lst.Count; for (int i = 0; i "lt" n; ++i) { Console.Write(lst[i] + " "); } Console.WriteLine(""); } } // AnomalyDBSCAN } // ns
Raw data:
# people_raw.txt # F short 24 arkansas 29500 liberal M tall 39 delaware 51200 moderate F short 63 colorado 75800 conservative M medium 36 illinois 44500 moderate F short 27 colorado 28600 liberal F short 50 colorado 56500 moderate F medium 50 illinois 55000 moderate M tall 19 delaware 32700 conservative F short 22 illinois 27700 moderate M tall 39 delaware 47100 liberal F short 34 arkansas 39400 moderate M medium 22 illinois 33500 conservative F medium 35 delaware 35200 liberal M tall 33 colorado 46400 moderate F short 45 colorado 54100 moderate F short 42 illinois 50700 moderate M tall 33 colorado 46800 moderate F tall 25 delaware 30000 moderate M medium 31 colorado 46400 conservative F short 27 arkansas 32500 liberal F short 48 illinois 54000 moderate M tall 64 illinois 71300 liberal F medium 61 colorado 72400 conservative F short 54 illinois 61000 conservative F short 29 arkansas 36300 conservative F short 50 delaware 55000 moderate F medium 55 illinois 62500 conservative F medium 40 illinois 52400 conservative F short 22 arkansas 23600 liberal F short 68 colorado 78400 conservative M tall 60 illinois 71700 liberal M tall 34 delaware 46500 moderate M medium 25 delaware 37100 conservative M short 31 illinois 48900 moderate F short 43 delaware 48000 moderate F short 58 colorado 65400 liberal M tall 55 illinois 60700 liberal M tall 43 colorado 51100 moderate M tall 43 delaware 53200 moderate M medium 21 arkansas 37200 conservative F short 55 delaware 64600 conservative F short 64 colorado 74800 conservative M tall 41 illinois 58800 moderate F medium 64 delaware 72700 conservative M medium 56 illinois 66600 liberal F short 31 delaware 36000 moderate M tall 65 delaware 70100 liberal F tall 55 illinois 64300 conservative M short 25 arkansas 40300 conservative F short 46 delaware 51000 moderate M tall 36 illinois 53500 conservative F short 52 illinois 58100 moderate F short 61 delaware 67900 conservative F short 57 delaware 65700 conservative M tall 46 colorado 52600 moderate M tall 62 arkansas 66800 liberal F short 55 illinois 62700 conservative M medium 22 delaware 27700 moderate M tall 50 illinois 62900 conservative M tall 32 illinois 41800 moderate M short 21 delaware 35600 conservative F medium 44 colorado 52000 moderate F short 46 illinois 51700 moderate F short 62 colorado 69700 conservative F short 57 illinois 66400 conservative M medium 67 illinois 75800 liberal F short 29 arkansas 34300 liberal F short 53 illinois 60100 conservative M tall 44 arkansas 54800 moderate F medium 46 colorado 52300 moderate M tall 20 illinois 30100 moderate M medium 38 illinois 53500 moderate F short 50 colorado 58600 moderate F short 33 colorado 42500 moderate M tall 33 colorado 39300 moderate F short 26 colorado 40400 conservative F short 58 arkansas 70700 conservative F tall 43 illinois 48000 moderate M medium 46 arkansas 64400 conservative F short 60 arkansas 71700 conservative M tall 42 arkansas 48900 moderate M tall 56 delaware 56400 liberal M short 62 colorado 66300 liberal M short 50 arkansas 64800 moderate F short 47 illinois 52000 moderate M tall 67 colorado 80400 liberal M tall 40 delaware 50400 moderate F short 42 colorado 48400 moderate F short 64 arkansas 72000 conservative M medium 47 arkansas 58700 liberal F medium 45 colorado 52800 moderate M tall 25 delaware 40900 conservative F short 38 arkansas 48400 conservative F short 55 delaware 60000 moderate M tall 44 arkansas 60600 moderate F medium 33 arkansas 41000 moderate F short 34 delaware 39000 moderate F short 27 colorado 33700 liberal F short 32 colorado 40700 moderate F tall 42 illinois 47000 moderate M short 24 delaware 40300 conservative F short 42 colorado 50300 moderate F short 25 delaware 28000 liberal F short 51 colorado 58000 moderate M medium 55 colorado 63500 liberal F short 44 arkansas 47800 liberal M short 18 arkansas 39800 conservative M tall 67 colorado 71600 liberal F short 45 delaware 50000 moderate F short 48 arkansas 55800 moderate M short 25 colorado 39000 moderate M tall 67 arkansas 78300 moderate F short 37 delaware 42000 moderate M short 32 arkansas 42700 moderate F short 48 arkansas 57000 moderate M tall 66 delaware 75000 liberal F tall 61 arkansas 70000 conservative M medium 58 delaware 68900 moderate F short 19 arkansas 24000 liberal F short 38 delaware 43000 moderate M medium 27 arkansas 36400 moderate F short 42 arkansas 48000 moderate F short 60 arkansas 71300 conservative M tall 27 delaware 34800 conservative F tall 29 colorado 37100 conservative M medium 43 arkansas 56700 moderate F medium 48 arkansas 56700 moderate F medium 27 delaware 29400 liberal M tall 44 arkansas 55200 conservative F short 23 colorado 26300 liberal M tall 36 colorado 53000 liberal F short 64 delaware 72500 conservative F short 29 delaware 30000 liberal M short 33 arkansas 49300 moderate M tall 66 colorado 75000 liberal M medium 21 delaware 34300 conservative F short 27 arkansas 32700 liberal F short 29 arkansas 31800 liberal M tall 31 arkansas 48600 moderate F short 36 delaware 41000 moderate F short 49 colorado 55700 moderate M short 28 arkansas 38400 conservative M medium 43 delaware 56600 moderate M medium 46 colorado 58800 moderate F short 57 arkansas 69800 conservative M short 52 delaware 59400 moderate M tall 31 delaware 43500 moderate M tall 55 arkansas 62000 liberal F short 50 arkansas 56400 moderate F short 48 colorado 55900 moderate M medium 22 delaware 34500 conservative F short 59 delaware 66700 conservative F short 34 arkansas 42800 liberal M tall 64 arkansas 77200 liberal F short 29 delaware 33500 liberal M medium 34 colorado 43200 moderate M medium 61 arkansas 75000 liberal F short 64 delaware 71100 conservative M short 29 arkansas 41300 conservative F short 63 colorado 70600 conservative M medium 29 colorado 40000 conservative M tall 51 arkansas 62700 moderate M tall 24 delaware 37700 conservative F medium 48 colorado 57500 moderate F short 18 arkansas 27400 conservative F short 18 arkansas 20300 liberal F short 33 colorado 38200 liberal M medium 20 delaware 34800 conservative F short 29 delaware 33000 liberal M short 44 delaware 63000 conservative M tall 65 delaware 81800 conservative M tall 56 arkansas 63700 liberal M medium 52 delaware 58400 moderate M medium 29 colorado 48600 conservative M tall 47 colorado 58900 moderate F medium 68 arkansas 72600 liberal F short 31 delaware 36000 moderate F short 61 colorado 62500 liberal F short 19 colorado 21500 liberal F tall 38 delaware 43000 moderate M tall 26 arkansas 42300 conservative F short 61 colorado 67400 conservative F short 40 arkansas 46500 moderate M medium 49 arkansas 65200 moderate F medium 56 arkansas 67500 conservative M short 48 colorado 66000 moderate F short 52 arkansas 56300 liberal M tall 18 arkansas 29800 conservative M tall 56 delaware 59300 liberal M medium 52 colorado 64400 moderate M medium 18 colorado 28600 moderate M tall 58 arkansas 66200 liberal M tall 39 colorado 55100 moderate M tall 46 arkansas 62900 moderate M medium 40 colorado 46200 moderate M medium 60 arkansas 72700 liberal F short 36 colorado 40700 liberal F short 44 arkansas 52300 moderate F short 28 arkansas 31300 liberal F short 54 delaware 62600 conservative M medium 51 arkansas 61200 moderate M short 32 colorado 46100 moderate F short 55 arkansas 62700 conservative F short 25 delaware 26200 liberal F medium 33 delaware 37300 liberal M medium 29 colorado 46200 conservative F short 65 arkansas 72700 conservative M tall 43 colorado 51400 moderate M short 54 colorado 64800 liberal F short 61 colorado 72700 conservative F short 52 colorado 63600 conservative F short 30 colorado 33500 liberal F short 29 arkansas 31400 liberal M tall 47 delaware 59400 moderate F short 39 colorado 47800 moderate F short 47 delaware 52000 moderate M medium 49 arkansas 58600 moderate M tall 63 delaware 67400 liberal M medium 30 arkansas 39200 conservative M tall 61 delaware 69600 liberal M medium 47 delaware 58700 moderate F short 30 delaware 34500 liberal M medium 51 delaware 58000 moderate M medium 24 arkansas 38800 moderate M short 49 arkansas 64500 moderate F medium 66 delaware 74500 conservative M tall 65 arkansas 76900 conservative M short 46 colorado 58000 conservative M tall 45 delaware 51800 moderate M short 47 arkansas 63600 conservative M tall 29 arkansas 44800 conservative M tall 57 delaware 69300 liberal M medium 20 arkansas 28700 liberal M medium 35 arkansas 43400 moderate M tall 61 delaware 67000 liberal M short 31 delaware 37300 moderate F short 18 arkansas 20800 liberal F medium 26 delaware 29200 liberal M medium 28 arkansas 36400 liberal M tall 59 delaware 69400 liberal
Normalized and encoded data:
# people_240.txt
#
# sex (M = 0.0, F = 0.5)
# height (short, medium, tall)
# age (min = 18, max = 68)
# State (Arkansas, Colorado, Delaware, Illinois)
# income (min = $20,300, max = $81,800)
# political leaning (conservative, moderate, liberal)
#
0.5, 0.25, 0.1200, 0.25, 0.00, 0.00, 0.00, 0.1496, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.4200, 0.00, 0.00, 0.25, 0.00, 0.5024, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.9000, 0.00, 0.25, 0.00, 0.00, 0.9024, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.3600, 0.00, 0.00, 0.00, 0.25, 0.3935, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.1800, 0.00, 0.25, 0.00, 0.00, 0.1350, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.6400, 0.00, 0.25, 0.00, 0.00, 0.5886, 0.0000, 0.3333, 0.0000
0.5, 0.50, 0.6400, 0.00, 0.00, 0.00, 0.25, 0.5642, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.0200, 0.00, 0.00, 0.25, 0.00, 0.2016, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.0800, 0.00, 0.00, 0.00, 0.25, 0.1203, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.4200, 0.00, 0.00, 0.25, 0.00, 0.4358, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.3200, 0.25, 0.00, 0.00, 0.00, 0.3106, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.0800, 0.00, 0.00, 0.00, 0.25, 0.2146, 0.3333, 0.0000, 0.0000
0.5, 0.50, 0.3400, 0.00, 0.00, 0.25, 0.00, 0.2423, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.3000, 0.00, 0.25, 0.00, 0.00, 0.4244, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.5400, 0.00, 0.25, 0.00, 0.00, 0.5496, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.4800, 0.00, 0.00, 0.00, 0.25, 0.4943, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.3000, 0.00, 0.25, 0.00, 0.00, 0.4309, 0.0000, 0.3333, 0.0000
0.5, 0.75, 0.1400, 0.00, 0.00, 0.25, 0.00, 0.1577, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.2600, 0.00, 0.25, 0.00, 0.00, 0.4244, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.1800, 0.25, 0.00, 0.00, 0.00, 0.1984, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.6000, 0.00, 0.00, 0.00, 0.25, 0.5480, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.9200, 0.00, 0.00, 0.00, 0.25, 0.8293, 0.0000, 0.0000, 0.3333
0.5, 0.50, 0.8600, 0.00, 0.25, 0.00, 0.00, 0.8472, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.7200, 0.00, 0.00, 0.00, 0.25, 0.6618, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.2200, 0.25, 0.00, 0.00, 0.00, 0.2602, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.6400, 0.00, 0.00, 0.25, 0.00, 0.5642, 0.0000, 0.3333, 0.0000
0.5, 0.50, 0.7400, 0.00, 0.00, 0.00, 0.25, 0.6862, 0.3333, 0.0000, 0.0000
0.5, 0.50, 0.4400, 0.00, 0.00, 0.00, 0.25, 0.5220, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.0800, 0.25, 0.00, 0.00, 0.00, 0.0537, 0.0000, 0.0000, 0.3333
0.5, 0.25, 1.0000, 0.00, 0.25, 0.00, 0.00, 0.9447, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.8400, 0.00, 0.00, 0.00, 0.25, 0.8358, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.3200, 0.00, 0.00, 0.25, 0.00, 0.4260, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.1400, 0.00, 0.00, 0.25, 0.00, 0.2732, 0.3333, 0.0000, 0.0000
0.0, 0.25, 0.2600, 0.00, 0.00, 0.00, 0.25, 0.4650, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.5000, 0.00, 0.00, 0.25, 0.00, 0.4504, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.8000, 0.00, 0.25, 0.00, 0.00, 0.7333, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.7400, 0.00, 0.00, 0.00, 0.25, 0.6569, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.5000, 0.00, 0.25, 0.00, 0.00, 0.5008, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.5000, 0.00, 0.00, 0.25, 0.00, 0.5350, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.0600, 0.25, 0.00, 0.00, 0.00, 0.2748, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.7400, 0.00, 0.00, 0.25, 0.00, 0.7203, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.9200, 0.00, 0.25, 0.00, 0.00, 0.8862, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.4600, 0.00, 0.00, 0.00, 0.25, 0.6260, 0.0000, 0.3333, 0.0000
0.5, 0.50, 0.9200, 0.00, 0.00, 0.25, 0.00, 0.8520, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.7600, 0.00, 0.00, 0.00, 0.25, 0.7528, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.2600, 0.00, 0.00, 0.25, 0.00, 0.2553, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.9400, 0.00, 0.00, 0.25, 0.00, 0.8098, 0.0000, 0.0000, 0.3333
0.5, 0.75, 0.7400, 0.00, 0.00, 0.00, 0.25, 0.7154, 0.3333, 0.0000, 0.0000
0.0, 0.25, 0.1400, 0.25, 0.00, 0.00, 0.00, 0.3252, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.5600, 0.00, 0.00, 0.25, 0.00, 0.4992, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.3600, 0.00, 0.00, 0.00, 0.25, 0.5398, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.6800, 0.00, 0.00, 0.00, 0.25, 0.6146, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.8600, 0.00, 0.00, 0.25, 0.00, 0.7740, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.7800, 0.00, 0.00, 0.25, 0.00, 0.7382, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.5600, 0.00, 0.25, 0.00, 0.00, 0.5252, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.8800, 0.25, 0.00, 0.00, 0.00, 0.7561, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.7400, 0.00, 0.00, 0.00, 0.25, 0.6894, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.0800, 0.00, 0.00, 0.25, 0.00, 0.1203, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.6400, 0.00, 0.00, 0.00, 0.25, 0.6927, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.2800, 0.00, 0.00, 0.00, 0.25, 0.3496, 0.0000, 0.3333, 0.0000
0.0, 0.25, 0.0600, 0.00, 0.00, 0.25, 0.00, 0.2488, 0.3333, 0.0000, 0.0000
0.5, 0.50, 0.5200, 0.00, 0.25, 0.00, 0.00, 0.5154, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.5600, 0.00, 0.00, 0.00, 0.25, 0.5106, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.8800, 0.00, 0.25, 0.00, 0.00, 0.8033, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.7800, 0.00, 0.00, 0.00, 0.25, 0.7496, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.9800, 0.00, 0.00, 0.00, 0.25, 0.9024, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.2200, 0.25, 0.00, 0.00, 0.00, 0.2276, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.7000, 0.00, 0.00, 0.00, 0.25, 0.6472, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.5200, 0.25, 0.00, 0.00, 0.00, 0.5610, 0.0000, 0.3333, 0.0000
0.5, 0.50, 0.5600, 0.00, 0.25, 0.00, 0.00, 0.5203, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.0400, 0.00, 0.00, 0.00, 0.25, 0.1593, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.4000, 0.00, 0.00, 0.00, 0.25, 0.5398, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.6400, 0.00, 0.25, 0.00, 0.00, 0.6228, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.3000, 0.00, 0.25, 0.00, 0.00, 0.3610, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.3000, 0.00, 0.25, 0.00, 0.00, 0.3089, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.1600, 0.00, 0.25, 0.00, 0.00, 0.3268, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.8000, 0.25, 0.00, 0.00, 0.00, 0.8195, 0.3333, 0.0000, 0.0000
0.5, 0.75, 0.5000, 0.00, 0.00, 0.00, 0.25, 0.4504, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.5600, 0.25, 0.00, 0.00, 0.00, 0.7171, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.8400, 0.25, 0.00, 0.00, 0.00, 0.8358, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.4800, 0.25, 0.00, 0.00, 0.00, 0.4650, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.7600, 0.00, 0.00, 0.25, 0.00, 0.5870, 0.0000, 0.0000, 0.3333
0.0, 0.25, 0.8800, 0.00, 0.25, 0.00, 0.00, 0.7480, 0.0000, 0.0000, 0.3333
0.0, 0.25, 0.6400, 0.25, 0.00, 0.00, 0.00, 0.7236, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.5800, 0.00, 0.00, 0.00, 0.25, 0.5154, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.9800, 0.00, 0.25, 0.00, 0.00, 0.9772, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.4400, 0.00, 0.00, 0.25, 0.00, 0.4894, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.4800, 0.00, 0.25, 0.00, 0.00, 0.4569, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.9200, 0.25, 0.00, 0.00, 0.00, 0.8407, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.5800, 0.25, 0.00, 0.00, 0.00, 0.6244, 0.0000, 0.0000, 0.3333
0.5, 0.50, 0.5400, 0.00, 0.25, 0.00, 0.00, 0.5285, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.1400, 0.00, 0.00, 0.25, 0.00, 0.3350, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.4000, 0.25, 0.00, 0.00, 0.00, 0.4569, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.7400, 0.00, 0.00, 0.25, 0.00, 0.6455, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.5200, 0.25, 0.00, 0.00, 0.00, 0.6553, 0.0000, 0.3333, 0.0000
0.5, 0.50, 0.3000, 0.25, 0.00, 0.00, 0.00, 0.3366, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.3200, 0.00, 0.00, 0.25, 0.00, 0.3041, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.1800, 0.00, 0.25, 0.00, 0.00, 0.2179, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.2800, 0.00, 0.25, 0.00, 0.00, 0.3317, 0.0000, 0.3333, 0.0000
0.5, 0.75, 0.4800, 0.00, 0.00, 0.00, 0.25, 0.4341, 0.0000, 0.3333, 0.0000
0.0, 0.25, 0.1200, 0.00, 0.00, 0.25, 0.00, 0.3252, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.4800, 0.00, 0.25, 0.00, 0.00, 0.4878, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.1400, 0.00, 0.00, 0.25, 0.00, 0.1252, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.6600, 0.00, 0.25, 0.00, 0.00, 0.6130, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.7400, 0.00, 0.25, 0.00, 0.00, 0.7024, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.5200, 0.25, 0.00, 0.00, 0.00, 0.4472, 0.0000, 0.0000, 0.3333
0.0, 0.25, 0.0000, 0.25, 0.00, 0.00, 0.00, 0.3171, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.9800, 0.00, 0.25, 0.00, 0.00, 0.8341, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.5400, 0.00, 0.00, 0.25, 0.00, 0.4829, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.6000, 0.25, 0.00, 0.00, 0.00, 0.5772, 0.0000, 0.3333, 0.0000
0.0, 0.25, 0.1400, 0.00, 0.25, 0.00, 0.00, 0.3041, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.9800, 0.25, 0.00, 0.00, 0.00, 0.9431, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.3800, 0.00, 0.00, 0.25, 0.00, 0.3528, 0.0000, 0.3333, 0.0000
0.0, 0.25, 0.2800, 0.25, 0.00, 0.00, 0.00, 0.3642, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.6000, 0.25, 0.00, 0.00, 0.00, 0.5967, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.9600, 0.00, 0.00, 0.25, 0.00, 0.8894, 0.0000, 0.0000, 0.3333
0.5, 0.75, 0.8600, 0.25, 0.00, 0.00, 0.00, 0.8081, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.8000, 0.00, 0.00, 0.25, 0.00, 0.7902, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.0200, 0.25, 0.00, 0.00, 0.00, 0.0602, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.4000, 0.00, 0.00, 0.25, 0.00, 0.3691, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.1800, 0.25, 0.00, 0.00, 0.00, 0.2618, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.4800, 0.25, 0.00, 0.00, 0.00, 0.4504, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.8400, 0.25, 0.00, 0.00, 0.00, 0.8293, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.1800, 0.00, 0.00, 0.25, 0.00, 0.2358, 0.3333, 0.0000, 0.0000
0.5, 0.75, 0.2200, 0.00, 0.25, 0.00, 0.00, 0.2732, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.5000, 0.25, 0.00, 0.00, 0.00, 0.5919, 0.0000, 0.3333, 0.0000
0.5, 0.50, 0.6000, 0.25, 0.00, 0.00, 0.00, 0.5919, 0.0000, 0.3333, 0.0000
0.5, 0.50, 0.1800, 0.00, 0.00, 0.25, 0.00, 0.1480, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.5200, 0.25, 0.00, 0.00, 0.00, 0.5675, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.1000, 0.00, 0.25, 0.00, 0.00, 0.0976, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.3600, 0.00, 0.25, 0.00, 0.00, 0.5317, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.9200, 0.00, 0.00, 0.25, 0.00, 0.8488, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.2200, 0.00, 0.00, 0.25, 0.00, 0.1577, 0.0000, 0.0000, 0.3333
0.0, 0.25, 0.3000, 0.25, 0.00, 0.00, 0.00, 0.4715, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.9600, 0.00, 0.25, 0.00, 0.00, 0.8894, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.0600, 0.00, 0.00, 0.25, 0.00, 0.2276, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.1800, 0.25, 0.00, 0.00, 0.00, 0.2016, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.2200, 0.25, 0.00, 0.00, 0.00, 0.1870, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.2600, 0.25, 0.00, 0.00, 0.00, 0.4602, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.3600, 0.00, 0.00, 0.25, 0.00, 0.3366, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.6200, 0.00, 0.25, 0.00, 0.00, 0.5756, 0.0000, 0.3333, 0.0000
0.0, 0.25, 0.2000, 0.25, 0.00, 0.00, 0.00, 0.2943, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.5000, 0.00, 0.00, 0.25, 0.00, 0.5902, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.5600, 0.00, 0.25, 0.00, 0.00, 0.6260, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.7800, 0.25, 0.00, 0.00, 0.00, 0.8049, 0.3333, 0.0000, 0.0000
0.0, 0.25, 0.6800, 0.00, 0.00, 0.25, 0.00, 0.6358, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.2600, 0.00, 0.00, 0.25, 0.00, 0.3772, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.7400, 0.25, 0.00, 0.00, 0.00, 0.6780, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.6400, 0.25, 0.00, 0.00, 0.00, 0.5870, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.6000, 0.00, 0.25, 0.00, 0.00, 0.5789, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.0800, 0.00, 0.00, 0.25, 0.00, 0.2309, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.8200, 0.00, 0.00, 0.25, 0.00, 0.7545, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.3200, 0.25, 0.00, 0.00, 0.00, 0.3659, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.9200, 0.25, 0.00, 0.00, 0.00, 0.9252, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.2200, 0.00, 0.00, 0.25, 0.00, 0.2146, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.3200, 0.00, 0.25, 0.00, 0.00, 0.3724, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.8600, 0.25, 0.00, 0.00, 0.00, 0.8894, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.9200, 0.00, 0.00, 0.25, 0.00, 0.8260, 0.3333, 0.0000, 0.0000
0.0, 0.25, 0.2200, 0.25, 0.00, 0.00, 0.00, 0.3415, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.9000, 0.00, 0.25, 0.00, 0.00, 0.8179, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.2200, 0.00, 0.25, 0.00, 0.00, 0.3203, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.6600, 0.25, 0.00, 0.00, 0.00, 0.6894, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.1200, 0.00, 0.00, 0.25, 0.00, 0.2829, 0.3333, 0.0000, 0.0000
0.5, 0.50, 0.6000, 0.00, 0.25, 0.00, 0.00, 0.6049, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.0000, 0.25, 0.00, 0.00, 0.00, 0.1154, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.0000, 0.25, 0.00, 0.00, 0.00, 0.0000, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.3000, 0.00, 0.25, 0.00, 0.00, 0.2911, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.0400, 0.00, 0.00, 0.25, 0.00, 0.2358, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.2200, 0.00, 0.00, 0.25, 0.00, 0.2065, 0.0000, 0.0000, 0.3333
0.0, 0.25, 0.5200, 0.00, 0.00, 0.25, 0.00, 0.6943, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.9400, 0.00, 0.00, 0.25, 0.00, 1.0000, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.7600, 0.25, 0.00, 0.00, 0.00, 0.7057, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.6800, 0.00, 0.00, 0.25, 0.00, 0.6195, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.2200, 0.00, 0.25, 0.00, 0.00, 0.4602, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.5800, 0.00, 0.25, 0.00, 0.00, 0.6276, 0.0000, 0.3333, 0.0000
0.5, 0.50, 1.0000, 0.25, 0.00, 0.00, 0.00, 0.8504, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.2600, 0.00, 0.00, 0.25, 0.00, 0.2553, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.8600, 0.00, 0.25, 0.00, 0.00, 0.6862, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.0200, 0.00, 0.25, 0.00, 0.00, 0.0195, 0.0000, 0.0000, 0.3333
0.5, 0.75, 0.4000, 0.00, 0.00, 0.25, 0.00, 0.3691, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.1600, 0.25, 0.00, 0.00, 0.00, 0.3577, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.8600, 0.00, 0.25, 0.00, 0.00, 0.7659, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.4400, 0.25, 0.00, 0.00, 0.00, 0.4260, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.6200, 0.25, 0.00, 0.00, 0.00, 0.7301, 0.0000, 0.3333, 0.0000
0.5, 0.50, 0.7600, 0.25, 0.00, 0.00, 0.00, 0.7675, 0.3333, 0.0000, 0.0000
0.0, 0.25, 0.6000, 0.00, 0.25, 0.00, 0.00, 0.7431, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.6800, 0.25, 0.00, 0.00, 0.00, 0.5854, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.0000, 0.25, 0.00, 0.00, 0.00, 0.1545, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.7600, 0.00, 0.00, 0.25, 0.00, 0.6341, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.6800, 0.00, 0.25, 0.00, 0.00, 0.7171, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.0000, 0.00, 0.25, 0.00, 0.00, 0.1350, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.8000, 0.25, 0.00, 0.00, 0.00, 0.7463, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.4200, 0.00, 0.25, 0.00, 0.00, 0.5659, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.5600, 0.25, 0.00, 0.00, 0.00, 0.6927, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.4400, 0.00, 0.25, 0.00, 0.00, 0.4211, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.8400, 0.25, 0.00, 0.00, 0.00, 0.8520, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.3600, 0.00, 0.25, 0.00, 0.00, 0.3317, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.5200, 0.25, 0.00, 0.00, 0.00, 0.5203, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.2000, 0.25, 0.00, 0.00, 0.00, 0.1789, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.7200, 0.00, 0.00, 0.25, 0.00, 0.6878, 0.3333, 0.0000, 0.0000
0.0, 0.50, 0.6600, 0.25, 0.00, 0.00, 0.00, 0.6650, 0.0000, 0.3333, 0.0000
0.0, 0.25, 0.2800, 0.00, 0.25, 0.00, 0.00, 0.4195, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.7400, 0.25, 0.00, 0.00, 0.00, 0.6894, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.1400, 0.00, 0.00, 0.25, 0.00, 0.0959, 0.0000, 0.0000, 0.3333
0.5, 0.50, 0.3000, 0.00, 0.00, 0.25, 0.00, 0.2764, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.2200, 0.00, 0.25, 0.00, 0.00, 0.4211, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.9400, 0.25, 0.00, 0.00, 0.00, 0.8520, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.5000, 0.00, 0.25, 0.00, 0.00, 0.5057, 0.0000, 0.3333, 0.0000
0.0, 0.25, 0.7200, 0.00, 0.25, 0.00, 0.00, 0.7236, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.8600, 0.00, 0.25, 0.00, 0.00, 0.8520, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.6800, 0.00, 0.25, 0.00, 0.00, 0.7041, 0.3333, 0.0000, 0.0000
0.5, 0.25, 0.2400, 0.00, 0.25, 0.00, 0.00, 0.2146, 0.0000, 0.0000, 0.3333
0.5, 0.25, 0.2200, 0.25, 0.00, 0.00, 0.00, 0.1805, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.5800, 0.00, 0.00, 0.25, 0.00, 0.6358, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.4200, 0.00, 0.25, 0.00, 0.00, 0.4472, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.5800, 0.00, 0.00, 0.25, 0.00, 0.5154, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.6200, 0.25, 0.00, 0.00, 0.00, 0.6228, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.9000, 0.00, 0.00, 0.25, 0.00, 0.7659, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.2400, 0.25, 0.00, 0.00, 0.00, 0.3073, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.8600, 0.00, 0.00, 0.25, 0.00, 0.8016, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.5800, 0.00, 0.00, 0.25, 0.00, 0.6244, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.2400, 0.00, 0.00, 0.25, 0.00, 0.2309, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.6600, 0.00, 0.00, 0.25, 0.00, 0.6130, 0.0000, 0.3333, 0.0000
0.0, 0.50, 0.1200, 0.25, 0.00, 0.00, 0.00, 0.3008, 0.0000, 0.3333, 0.0000
0.0, 0.25, 0.6200, 0.25, 0.00, 0.00, 0.00, 0.7187, 0.0000, 0.3333, 0.0000
0.5, 0.50, 0.9600, 0.00, 0.00, 0.25, 0.00, 0.8813, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.9400, 0.25, 0.00, 0.00, 0.00, 0.9203, 0.3333, 0.0000, 0.0000
0.0, 0.25, 0.5600, 0.00, 0.25, 0.00, 0.00, 0.6130, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.5400, 0.00, 0.00, 0.25, 0.00, 0.5122, 0.0000, 0.3333, 0.0000
0.0, 0.25, 0.5800, 0.25, 0.00, 0.00, 0.00, 0.7041, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.2200, 0.25, 0.00, 0.00, 0.00, 0.3984, 0.3333, 0.0000, 0.0000
0.0, 0.75, 0.7800, 0.00, 0.00, 0.25, 0.00, 0.7967, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.0400, 0.25, 0.00, 0.00, 0.00, 0.1366, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.3400, 0.25, 0.00, 0.00, 0.00, 0.3756, 0.0000, 0.3333, 0.0000
0.0, 0.75, 0.8600, 0.00, 0.00, 0.25, 0.00, 0.7593, 0.0000, 0.0000, 0.3333
0.0, 0.25, 0.2600, 0.00, 0.00, 0.25, 0.00, 0.2764, 0.0000, 0.3333, 0.0000
0.5, 0.25, 0.0000, 0.25, 0.00, 0.00, 0.00, 0.0081, 0.0000, 0.0000, 0.3333
0.5, 0.50, 0.1600, 0.00, 0.00, 0.25, 0.00, 0.1447, 0.0000, 0.0000, 0.3333
0.0, 0.50, 0.2000, 0.25, 0.00, 0.00, 0.00, 0.2618, 0.0000, 0.0000, 0.3333
0.0, 0.75, 0.8200, 0.00, 0.00, 0.25, 0.00, 0.7984, 0.0000, 0.0000, 0.3333
Time for an ensemble. 😀