diff --git "a/models/pose_estimation_mediapipe/demo.cpp" "b/models/pose_estimation_mediapipe/demo.cpp" new file mode 100644--- /dev/null +++ "b/models/pose_estimation_mediapipe/demo.cpp" @@ -0,0 +1,2866 @@ +#include +#include +#include +#include + +#include + +const long double _M_PI = 3.141592653589793238L; +using namespace std; +using namespace cv; +using namespace dnn; + +vector< pair > backendTargetPairs = { + std::make_pair(dnn::DNN_BACKEND_OPENCV, dnn::DNN_TARGET_CPU), + std::make_pair(dnn::DNN_BACKEND_CUDA, dnn::DNN_TARGET_CUDA), + std::make_pair(dnn::DNN_BACKEND_CUDA, dnn::DNN_TARGET_CUDA_FP16), + std::make_pair(dnn::DNN_BACKEND_TIMVX, dnn::DNN_TARGET_NPU), + std::make_pair(dnn::DNN_BACKEND_CANN, dnn::DNN_TARGET_NPU) }; + + +Mat getMediapipeAnchor(); + +class MPPersonDet { +private: + Net net; + string modelPath; + Size inputSize; + float scoreThreshold; + float nmsThreshold; + dnn::Backend backendId; + dnn::Target targetId; + int topK; + Mat anchors; + +public: + MPPersonDet(string modPath, float nmsThresh = 0.5, float scoreThresh = 0.3, int tok=1 , dnn::Backend bId = DNN_BACKEND_DEFAULT, dnn::Target tId = DNN_TARGET_CPU) : + modelPath(modPath), nmsThreshold(nmsThresh), + scoreThreshold(scoreThresh), topK(tok), + backendId(bId), targetId(tId) + { + this->inputSize = Size(224, 224); + this->net = readNet(this->modelPath); + this->net.setPreferableBackend(this->backendId); + this->net.setPreferableTarget(this->targetId); + this->anchors = getMediapipeAnchor(); + } + + void setBackendAndTarget(dnn::Backend bId, dnn::Target tId) + { + this->backendId = bId; + this->targetId = tId; + this->net.setPreferableBackend(this->backendId); + this->net.setPreferableTarget(this->targetId); + } + + pair preprocess(Mat img) + { + Mat blob; + Image2BlobParams paramMediapipe; + paramMediapipe.datalayout = DNN_LAYOUT_NCHW; + paramMediapipe.ddepth = CV_32F; + paramMediapipe.mean = Scalar::all(127.5); + paramMediapipe.scalefactor = Scalar::all(1/127.5); + paramMediapipe.size = this->inputSize; + paramMediapipe.swapRB = true; + paramMediapipe.paddingmode = DNN_PMODE_LETTERBOX; + + double ratio = min(this->inputSize.height / double(img.rows), this->inputSize.width / double(img.cols)); + Size padBias(0, 0); + if (img.rows != this->inputSize.height || img.cols != this->inputSize.width) + { + // keep aspect ratio when resize + Size ratioSize(int(img.cols * ratio), int(img.rows* ratio)); + int padH = this->inputSize.height - ratioSize.height; + int padW = this->inputSize.width - ratioSize.width; + padBias.width = padW / 2; + padBias.height = padH / 2; + } + blob = blobFromImageWithParams(img, paramMediapipe); + padBias = Size(int(padBias.width / ratio), int(padBias.height / ratio)); + return pair(blob, padBias); + } + + Mat infer(Mat srcimg) + { + pair w = this->preprocess(srcimg); + Mat inputBlob = get<0>(w); + Size padBias = get<1>(w); + this->net.setInput(inputBlob); + vector outs; + this->net.forward(outs, this->net.getUnconnectedOutLayersNames()); + Mat predictions = this->postprocess(outs, Size(srcimg.cols, srcimg.rows), padBias); + return predictions; + } + + Mat postprocess(vector outputs, Size orgSize, Size padBias) + { + Mat score = outputs[1].reshape(0, outputs[1].size[0]); + Mat boxLandDelta = outputs[0].reshape(outputs[0].size[0], outputs[0].size[1]); + Mat boxDelta = boxLandDelta.colRange(0, 4); + Mat landmarkDelta = boxLandDelta.colRange(4, boxLandDelta.cols); + float scale = float(max(orgSize.height, orgSize.width)); + Mat mask = score < -100; + score.setTo(-100, mask); + mask = score > 100; + score.setTo(100, mask); + Mat deno; + exp(-score, deno); + divide(1.0, 1+deno, score); + boxDelta.colRange(0, 1) = boxDelta.colRange(0, 1) / this->inputSize.width; + boxDelta.colRange(1, 2) = boxDelta.colRange(1, 2) / this->inputSize.height; + boxDelta.colRange(2, 3) = boxDelta.colRange(2, 3) / this->inputSize.width; + boxDelta.colRange(3, 4) = boxDelta.colRange(3, 4) / this->inputSize.height; + Mat xy1 = (boxDelta.colRange(0, 2) - boxDelta.colRange(2, 4) / 2 + this->anchors) * scale; + Mat xy2 = (boxDelta.colRange(0, 2) + boxDelta.colRange(2, 4) / 2 + this->anchors) * scale; + Mat boxes; + hconcat(xy1, xy2, boxes); + vector< Rect2d > rotBoxes(boxes.rows); + boxes.colRange(0, 1) = boxes.colRange(0, 1) - padBias.width; + boxes.colRange(1, 2) = boxes.colRange(1, 2) - padBias.height; + boxes.colRange(2, 3) = boxes.colRange(2, 3) - padBias.width; + boxes.colRange(3, 4) = boxes.colRange(3, 4) - padBias.height; + for (int i = 0; i < boxes.rows; i++) + { + rotBoxes[i] = Rect2d(Point2d(boxes.at(i, 0), boxes.at(i, 1)), Point2d(boxes.at(i, 2), boxes.at(i, 3))); + } + vector< int > keep; + NMSBoxes(rotBoxes, score, this->scoreThreshold, this->nmsThreshold, keep, 1.0f, this->topK); + if (keep.size() == 0) + return Mat(); + int nbCols = landmarkDelta.cols + boxes.cols + 1; + Mat candidates(int(keep.size()), nbCols, CV_32FC1); + int row = 0; + for (auto idx : keep) + { + candidates.at(row, nbCols - 1) = score.at(idx); + boxes.row(idx).copyTo(candidates.row(row).colRange(0, 4)); + candidates.at(row, 4) = (landmarkDelta.at(idx, 0) / this->inputSize.width + this->anchors.at(idx,0)) * scale - padBias.width; + candidates.at(row, 5) = (landmarkDelta.at(idx, 1) / this->inputSize.height + this->anchors.at(idx, 1))* scale - padBias.height; + candidates.at(row, 6) = (landmarkDelta.at(idx, 2) / this->inputSize.width + this->anchors.at(idx, 0))* scale - padBias.width; + candidates.at(row, 7) = (landmarkDelta.at(idx, 3) / this->inputSize.height + this->anchors.at(idx, 1))* scale - padBias.height; + candidates.at(row, 8) = (landmarkDelta.at(idx, 4) / this->inputSize.width + this->anchors.at(idx, 0))* scale - padBias.width; + candidates.at(row, 9) = (landmarkDelta.at(idx, 5) / this->inputSize.height + this->anchors.at(idx, 1))* scale - padBias.height; + candidates.at(row, 10) = (landmarkDelta.at(idx, 6) / this->inputSize.width + this->anchors.at(idx, 0))* scale - padBias.width; + candidates.at(row, 11) = (landmarkDelta.at(idx, 7) / this->inputSize.height + this->anchors.at(idx, 1))* scale - padBias.height; + row++; + } + return candidates; + + } + + +}; + +class MPPose { +private: + Net net; + string modelPath; + Size inputSize; + float confThreshold; + dnn::Backend backendId; + dnn::Target targetId; + float personBoxPreEnlargeFactor; + float personBoxEnlargeFactor; + Mat anchors; + +public: + MPPose(string modPath, float confThresh = 0.5, dnn::Backend bId = DNN_BACKEND_DEFAULT, dnn::Target tId = DNN_TARGET_CPU) : + modelPath(modPath), confThreshold(confThresh), + backendId(bId), targetId(tId) + { + this->inputSize = Size(256, 256); + this->net = readNet(this->modelPath); + this->net.setPreferableBackend(this->backendId); + this->net.setPreferableTarget(this->targetId); + this->anchors = getMediapipeAnchor(); + // RoI will be larger so the performance will be better, but preprocess will be slower.Default to 1. + this->personBoxPreEnlargeFactor = 1; + this->personBoxEnlargeFactor = 1.25; + } + + void setBackendAndTarget(dnn::Backend bId, dnn::Target tId) + { + this->backendId = bId; + this->targetId = tId; + this->net.setPreferableBackend(this->backendId); + this->net.setPreferableTarget(this->targetId); + } + + tuple preprocess(Mat image, Mat person) + { + /*** + Rotate input for inference. + Parameters: + image - input image of BGR channel order + face_bbox - human face bounding box found in image of format [[x1, y1], [x2, y2]] (top-left and bottom-right points) + person_landmarks - 4 landmarks (2 full body points, 2 upper body points) of shape [4, 2] + Returns: + rotated_person - rotated person image for inference + rotate_person_bbox - person box of interest range + angle - rotate angle for person + rotation_matrix - matrix for rotation and de-rotation + pad_bias - pad pixels of interest range + */ + // crop and pad image to interest range + Size padBias(0, 0); // left, top + Mat personKeypoints = person.colRange(4, 12).reshape(0, 4); + Point2f midHipPoint = Point2f(personKeypoints.row(0)); + Point2f fullBodyPoint = Point2f(personKeypoints.row(1)); + // # get RoI + double fullDist = norm(midHipPoint - fullBodyPoint); + Mat fullBoxf,fullBox; + Mat v1 = Mat(midHipPoint) - fullDist, v2 = Mat(midHipPoint); + vector vmat = { Mat(midHipPoint) - fullDist, Mat(midHipPoint) + fullDist }; + hconcat(vmat, fullBoxf); + // enlarge to make sure full body can be cover + Mat cBox, centerBox, whBox; + reduce(fullBoxf, centerBox, 1, REDUCE_AVG, CV_32F); + whBox = fullBoxf.col(1) - fullBoxf.col(0); + Mat newHalfSize = whBox * this->personBoxPreEnlargeFactor / 2; + vmat[0] = centerBox - newHalfSize; + vmat[1] = centerBox + newHalfSize; + hconcat(vmat, fullBox); + Mat personBox; + fullBox.convertTo(personBox, CV_32S); + // refine person bbox + Mat idx = personBox.row(0) < 0; + personBox.row(0).setTo(0, idx); + idx = personBox.row(0) >= image.cols; + personBox.row(0).setTo(image.cols , idx); + idx = personBox.row(1) < 0; + personBox.row(1).setTo(0, idx); + idx = personBox.row(1) >= image.rows; + personBox.row(1).setTo(image.rows, idx); // crop to the size of interest + + image = image(Rect(personBox.at(0, 0), personBox.at(1, 0), personBox.at(0, 1) - personBox.at(0, 0), personBox.at(1, 1) - personBox.at(1, 0))); + // pad to square + int top = int(personBox.at(1, 0) - fullBox.at(1, 0)); + int left = int(personBox.at(0, 0) - fullBox.at(0, 0)); + int bottom = int(fullBox.at(1, 1) - personBox.at(1, 1)); + int right = int(fullBox.at(0, 1) - personBox.at(0, 1)); + copyMakeBorder(image, image, top, bottom, left, right, BORDER_CONSTANT, Scalar(0, 0, 0)); + padBias = Point(padBias) + Point(personBox.col(0)) - Point(left, top); + // compute rotation + midHipPoint -= Point2f(padBias); + fullBodyPoint -= Point2f(padBias); + float radians = float(_M_PI / 2 - atan2(-(fullBodyPoint.y - midHipPoint.y), fullBodyPoint.x - midHipPoint.x)); + radians = radians - 2 * float(_M_PI) * int((radians + _M_PI) / (2 * _M_PI)); + float angle = (radians * 180 / float(_M_PI)); + // get rotation matrix* + Mat rotationMatrix = getRotationMatrix2D(midHipPoint, angle, 1.0); + // get rotated image + Mat rotatedImage; + warpAffine(image, rotatedImage, rotationMatrix, Size(image.cols, image.rows)); + // get landmark bounding box + Mat blob; + Image2BlobParams paramPoseMediapipe; + paramPoseMediapipe.datalayout = DNN_LAYOUT_NHWC; + paramPoseMediapipe.ddepth = CV_32F; + paramPoseMediapipe.mean = Scalar::all(0); + paramPoseMediapipe.scalefactor = Scalar::all(1 / 255.); + paramPoseMediapipe.size = this->inputSize; + paramPoseMediapipe.swapRB = true; + paramPoseMediapipe.paddingmode = DNN_PMODE_NULL; + blob = blobFromImageWithParams(rotatedImage, paramPoseMediapipe); // resize INTER_AREA becomes INTER_LINEAR in blobFromImage + Mat rotatedPersonBox = (Mat_(2, 2) << 0, 0, image.cols, image.rows); + + return tuple(blob, rotatedPersonBox, angle, rotationMatrix, padBias); + } + + tuple infer(Mat image, Mat person) + { + int h = image.rows; + int w = image.cols; + // Preprocess + tuple tw; + tw = this->preprocess(image, person); + Mat inputBlob = get<0>(tw); + Mat rotatedPersonBbox = get<1>(tw); + float angle = get<2>(tw); + Mat rotationMatrix = get<3>(tw); + Size padBias = get<4>(tw); + + // Forward + this->net.setInput(inputBlob); + vector outputBlob; + this->net.forward(outputBlob, this->net.getUnconnectedOutLayersNames()); + + // Postprocess + tuple results; + results = this->postprocess(outputBlob, rotatedPersonBbox, angle, rotationMatrix, padBias, Size(w, h)); + return results;// # [bbox_coords, landmarks_coords, conf] + } + + tuple postprocess(vector blob, Mat rotatedPersonBox, float angle, Mat rotationMatrix, Size padBias, Size imgSize) + { + float valConf = blob[1].at(0); + if (valConf < this->confThreshold) + return tuple(Mat(), Mat(), Mat(), Mat(), Mat(), valConf); + Mat landmarks = blob[0].reshape(0, 39); + Mat mask = blob[2]; + Mat heatmap = blob[3]; + Mat landmarksWorld = blob[4].reshape(0, 39); + + Mat deno; + // recover sigmoid score + exp(-landmarks.colRange(3, landmarks.cols), deno); + divide(1.0, 1 + deno, landmarks.colRange(3, landmarks.cols)); + // TODO: refine landmarks with heatmap. reference: https://github.com/tensorflow/tfjs-models/blob/master/pose-detection/src/blazepose_tfjs/detector.ts#L577-L582 + heatmap = heatmap.reshape(0, heatmap.size[0]); + // transform coords back to the input coords + Mat whRotatedPersonPbox = rotatedPersonBox.row(1) - rotatedPersonBox.row(0); + Mat scaleFactor = whRotatedPersonPbox.clone(); + scaleFactor.col(0) /= this->inputSize.width; + scaleFactor.col(1) /= this->inputSize.height; + landmarks.col(0) = (landmarks.col(0) - this->inputSize.width / 2) * scaleFactor.at(0); + landmarks.col(1) = (landmarks.col(1) - this->inputSize.height / 2) * scaleFactor.at(1); + landmarks.col(2) = landmarks.col(2) * max(scaleFactor.at(1), scaleFactor.at(0)); + Mat coordsRotationMatrix; + getRotationMatrix2D(Point(0, 0), angle, 1.0).convertTo(coordsRotationMatrix, CV_32F); + Mat rotatedLandmarks = landmarks.colRange(0, 2) * coordsRotationMatrix.colRange(0, 2); + hconcat(rotatedLandmarks, landmarks.colRange(2, landmarks.cols), rotatedLandmarks); + Mat rotatedLandmarksWorld = landmarksWorld.colRange(0, 2) * coordsRotationMatrix.colRange(0, 2); + hconcat(rotatedLandmarksWorld, landmarksWorld.col(2), rotatedLandmarksWorld); + // invert rotation + Mat rotationComponent = (Mat_(2, 2) <(0,0), rotationMatrix.at(1, 0), rotationMatrix.at(0, 1), rotationMatrix.at(1, 1)); + Mat translationComponent = rotationMatrix(Rect(2, 0, 1, 2)).clone(); + Mat invertedTranslation = -rotationComponent * translationComponent; + Mat inverseRotationMatrix; + hconcat(rotationComponent, invertedTranslation, inverseRotationMatrix); + Mat center, rc; + reduce(rotatedPersonBox, rc, 0, REDUCE_AVG, CV_64F); + hconcat(rc, Mat(1, 1, CV_64FC1, 1) , center); + // get box center + Mat originalCenter(2, 1, CV_64FC1); + originalCenter.at(0) = center.dot(inverseRotationMatrix.row(0)); + originalCenter.at(1) = center.dot(inverseRotationMatrix.row(1)); + for (int idxRow = 0; idxRow < rotatedLandmarks.rows; idxRow++) + { + landmarks.at(idxRow, 0) = float(rotatedLandmarks.at(idxRow, 0) + originalCenter.at(0) + padBias.width); // + landmarks.at(idxRow, 1) = float(rotatedLandmarks.at(idxRow, 1) + originalCenter.at(1) + padBias.height); // + } + // get bounding box from rotated_landmarks + double vmin0, vmin1, vmax0, vmax1; + minMaxLoc(landmarks.col(0), &vmin0, &vmax0); + minMaxLoc(landmarks.col(1), &vmin1, &vmax1); + Mat bbox = (Mat_(2, 2) << vmin0, vmin1, vmax0, vmax1); + Mat centerBox; + reduce(bbox, centerBox, 0, REDUCE_AVG, CV_32F); + Mat whBox = bbox.row(1) - bbox.row(0); + Mat newHalfSize = whBox * this->personBoxEnlargeFactor / 2; + vector vmat(2); + vmat[0] = centerBox - newHalfSize; + vmat[1] = centerBox + newHalfSize; + vconcat(vmat, bbox); + // invert rotation for mask + mask = mask.reshape(1, 256); + Mat invertRotationMatrix = getRotationMatrix2D(Point(mask.cols / 2, mask.rows / 2), -angle, 1.0); + Mat invertRotationMask; + warpAffine(mask, invertRotationMask, invertRotationMatrix, Size(mask.cols, mask.rows)); + // enlarge mask + resize(invertRotationMask, invertRotationMask, Size(int(whRotatedPersonPbox.at(0)), int(whRotatedPersonPbox.at(1)))); + // crop and pad mask + int minW = -min(padBias.width, 0); + int minH= -min(padBias.height, 0); + int left = max(padBias.width, 0); + int top = max(padBias.height, 0); + Size padOver = imgSize - Size(invertRotationMask.cols, invertRotationMask.rows) - padBias; + int maxW = min(padOver.width, 0) + invertRotationMask.cols; + int maxH = min(padOver.height, 0) + invertRotationMask.rows; + int right = max(padOver.width, 0); + int bottom = max(padOver.height, 0); + invertRotationMask = invertRotationMask(Rect(minW, minH, maxW - minW, maxH - minH)).clone(); + copyMakeBorder(invertRotationMask, invertRotationMask, top, bottom, left, right, BORDER_CONSTANT, Scalar::all(0)); + // binarize mask + threshold(invertRotationMask, invertRotationMask, 1, 255, THRESH_BINARY); + + /* 2*2 person bbox: [[x1, y1], [x2, y2]] + # 39*5 screen landmarks: 33 keypoints and 6 auxiliary points with [x, y, z, visibility, presence], z value is relative to HIP + # Visibility is probability that a keypoint is located within the frame and not occluded by another bigger body part or another object + # Presence is probability that a keypoint is located within the frame + # 39*3 world landmarks: 33 keypoints and 6 auxiliary points with [x, y, z] 3D metric x, y, z coordinate + # img_height*img_width mask: gray mask, where 255 indicates the full body of a person and 0 means background + # 64*64*39 heatmap: currently only used for refining landmarks, requires sigmod processing before use + # conf: confidence of prediction*/ + return tuple(bbox, landmarks, rotatedLandmarksWorld, invertRotationMask, heatmap, valConf); + } +}; + +std::string keys = +"{ help h | | Print help message. }" +"{ model m | pose_estimation_mediapipe_2023mar.onnx | Usage: Path to the model, defaults to person_detection_mediapipe_2023mar.onnx }" +"{ input i | | Path to input image or video file. Skip this argument to capture frames from a camera.}" +"{ conf_threshold | 0.5 | Usage: Filter out hands of confidence < conf_threshold. }" +"{ top_k | 1 | Usage: Keep top_k bounding boxes before NMS. }" +"{ save s | true | Usage: Specify to save file with results (i.e. bounding box, confidence level). Invalid in case of camera input. }" +"{ vis v | true | Usage: Specify to open a new window to show results. Invalid in case of camera input. }" +"{ backend bt | 0 | Choose one of computation backends: " +"0: (default) OpenCV implementation + CPU, " +"1: CUDA + GPU (CUDA), " +"2: CUDA + GPU (CUDA FP16), " +"3: TIM-VX + NPU, " +"4: CANN + NPU}"; + + +void drawLines(Mat image, Mat landmarks, Mat keeplandmarks, bool isDrawPoint = true, int thickness = 2) +{ + + vector> segment = { + make_pair(0, 1), make_pair(1, 2), make_pair(2, 3), make_pair(3, 7), + make_pair(0, 4), make_pair(4, 5), make_pair(5, 6), make_pair(6, 8), + make_pair(9, 10), + make_pair(12, 14), make_pair(14, 16), make_pair(16, 22), make_pair(16, 18), make_pair(16, 20), make_pair(18, 20), + make_pair(11, 13), make_pair(13, 15), make_pair(15, 21), make_pair(15, 19), make_pair(15, 17), make_pair(17, 19), + make_pair(11, 12), make_pair(11, 23), make_pair(23, 24), make_pair(24, 12), + make_pair(24, 26), make_pair(26, 28), make_pair(28, 30), make_pair(28, 32), make_pair(30, 32), + make_pair(23, 25), make_pair(25, 27),make_pair(27, 31), make_pair(27, 29), make_pair(29, 31) }; + for (auto p : segment) + if (keeplandmarks.at(p.first) && keeplandmarks.at(p.second)) + line(image, Point(landmarks.row(p.first)), Point(landmarks.row(p.second)), Scalar(255, 255, 255), thickness); + if (isDrawPoint) + for (int idxRow = 0; idxRow < landmarks.rows; idxRow++) + if (keeplandmarks.at(idxRow)) + circle(image, Point(landmarks.row(idxRow)), thickness, Scalar(0, 0, 255), -1); +} + + +pair visualize(Mat image, vector> poses, float fps=-1) +{ + Mat displayScreen = image.clone(); + Mat display3d(400, 400, CV_8UC3, Scalar::all(0)); + line(display3d, Point(200, 0), Point(200, 400), Scalar(255, 255, 255), 2); + line(display3d, Point(0, 200), Point(400, 200), Scalar(255, 255, 255), 2); + putText(display3d, "Main View", Point(0, 12), FONT_HERSHEY_DUPLEX, 0.5, Scalar(0, 0, 255)); + putText(display3d, "Top View", Point(200, 12), FONT_HERSHEY_DUPLEX, 0.5, Scalar(0, 0, 255)); + putText(display3d, "Left View", Point(0, 212), FONT_HERSHEY_DUPLEX, 0.5, Scalar(0, 0, 255)); + putText(display3d, "Right View", Point(200, 212), FONT_HERSHEY_DUPLEX, 0.5, Scalar(0, 0, 255)); + bool isDraw = false; // ensure only one person is drawn + + for (auto pose : poses) + { + Mat bbox = get<0>(pose); + if (!bbox.empty()) + { + Mat landmarksScreen = get<1>(pose); + Mat landmarksWord = get<2>(pose); + Mat mask; + get<3>(pose).convertTo(mask, CV_8U); + Mat heatmap = get<4>(pose); + float conf = get<5>(pose); + Mat edges; + Canny(mask, edges, 100, 200); + Mat kernel(2, 2, CV_8UC1, Scalar::all(1)); // expansion edge to 2 pixels + dilate(edges, edges, kernel); + Mat edgesBGR; + cvtColor(edges, edgesBGR, COLOR_GRAY2BGR); + Mat idxSelec = edges == 255; + edgesBGR.setTo(Scalar(0, 255, 0), idxSelec); + + add(edgesBGR, displayScreen, displayScreen); + // draw box + Mat box; + bbox.convertTo(box, CV_32S); + + rectangle(displayScreen, Point(box.row(0)), Point(box.row(1)), Scalar(0, 255, 0), 2); + putText(displayScreen, format("Conf = %4f", conf), Point(0, 35), FONT_HERSHEY_DUPLEX, 0.7,Scalar(0, 0, 255), 2); + if (fps > 0) + putText(displayScreen, format("FPS = %.2f", fps), Point(0, 55), FONT_HERSHEY_SIMPLEX, 0.7, Scalar(0, 0, 255), 2); + // Draw line between each key points + landmarksScreen = landmarksScreen.rowRange(0, landmarksScreen.rows - 6); + landmarksWord = landmarksWord.rowRange(0, landmarksWord.rows - 6); + + Mat keepLandmarks = landmarksScreen.col(4) > 0.8; // only show visible keypoints which presence bigger than 0.8 + + Mat landmarksXY; + landmarksScreen.colRange(0, 2).convertTo(landmarksXY, CV_32S); + drawLines(displayScreen, landmarksXY, keepLandmarks, false); + + // z value is relative to HIP, but we use constant to instead + for (int idxRow = 0; idxRow < landmarksScreen.rows; idxRow++) + { + Mat landmark;// p in enumerate(landmarks_screen[:, 0 : 3].astype(np.int32)) + landmarksScreen.row(idxRow).convertTo(landmark, CV_32S); + if (keepLandmarks.at(idxRow)) + circle(displayScreen, Point(landmark.at(0), landmark.at(1)), 2, Scalar(0, 0, 255), -1); + } + + if (!isDraw) + { + isDraw = true; + // Main view + Mat landmarksXY = landmarksWord.colRange(0, 2).clone(); + Mat x = landmarksXY * 100 + 100; + x.convertTo(landmarksXY, CV_32S); + drawLines(display3d, landmarksXY, keepLandmarks, true, 2); + + // Top view + Mat landmarksXZ; + hconcat(landmarksWord.col(0), landmarksWord.col(2), landmarksXZ); + landmarksXZ.col(1) = -landmarksXZ.col(1); + x = landmarksXZ * 100; + x.col(0) += 300; + x.col(1) += 100; + x.convertTo(landmarksXZ, CV_32S); + drawLines(display3d, landmarksXZ, keepLandmarks, true, 2); + + // Left view + Mat landmarksYZ; + hconcat(landmarksWord.col(2), landmarksWord.col(1), landmarksYZ); + landmarksYZ.col(0) = -landmarksYZ.col(0); + x = landmarksYZ * 100; + x.col(0) += 100; + x.col(1) += 300; + x.convertTo(landmarksYZ, CV_32S); + drawLines(display3d, landmarksYZ, keepLandmarks, true, 2); + + // Right view + Mat landmarksZY; + hconcat(landmarksWord.col(2), landmarksWord.col(1), landmarksZY); + x = landmarksZY * 100; + x.col(0) += 300; + x.col(1) += 300; + x.convertTo(landmarksZY, CV_32S); + drawLines(display3d, landmarksZY, keepLandmarks, true, 2); + } + } + } + return pair(displayScreen, display3d); +} + + + +int main(int argc, char** argv) +{ + CommandLineParser parser(argc, argv, keys); + + parser.about("Person Detector from MediaPipe"); + if (parser.has("help")) + { + parser.printMessage(); + return 0; + } + + string model = parser.get("model"); + float confThreshold = parser.get("conf_threshold"); + float scoreThreshold = 0.5f; + float nmsThreshold = 0.3f; + int topK = 5000; + bool vis = parser.get("vis"); + bool save = parser.get("save"); + int backendTargetid = parser.get("backend"); + + if (model.empty()) + { + CV_Error(Error::StsError, "Model file " + model + " not found"); + } + VideoCapture cap; + if (parser.has("input")) + cap.open(samples::findFile(parser.get("input"))); + else + cap.open(0); + Mat frame; + // person detector + MPPersonDet modelNet("../person_detection_mediapipe/person_detection_mediapipe_2023mar.onnx", nmsThreshold, scoreThreshold, topK, + backendTargetPairs[backendTargetid].first, backendTargetPairs[backendTargetid].second); + // pose estimator + MPPose poseEstimator(model, confThreshold, backendTargetPairs[backendTargetid].first, backendTargetPairs[backendTargetid].second); + //! [Open a video file or an image file or a camera stream] + if (!cap.isOpened()) + CV_Error(Error::StsError, "Cannot opend video or file"); + + static const std::string kWinName = "MPPose Demo"; + while (waitKey(1) < 0) + { + cap >> frame; + if (frame.empty()) + { + if (parser.has("input")) + { + cout << "Frame is empty" << endl; + break; + } + else + continue; + } + TickMeter tm; + tm.start(); + Mat person = modelNet.infer(frame); + tm.stop(); + vector> pose; + for (int idxRow = 0; idxRow < person.rows; idxRow++) + { + tuple re = poseEstimator.infer(frame, person.row(idxRow)); + if (!get<0>(re).empty()) + pose.push_back(re); + } + cout << "Inference time: " << tm.getTimeMilli() << " ms\n"; + pair duoimg = visualize(frame, pose, tm.getFPS()); + if (vis) + { + imshow(kWinName, get<0>(duoimg)); + imshow("3d", get<1>(duoimg)); + } + } + return 0; +} + + +Mat getMediapipeAnchor() +{ + Mat anchor= (Mat_(2254,2) << 0.017857142857142856, 0.017857142857142856, + 0.017857142857142856, 0.017857142857142856, + 0.05357142857142857, 0.017857142857142856, + 0.05357142857142857, 0.017857142857142856, + 0.08928571428571429, 0.017857142857142856, + 0.08928571428571429, 0.017857142857142856, + 0.125, 0.017857142857142856, + 0.125, 0.017857142857142856, + 0.16071428571428573, 0.017857142857142856, + 0.16071428571428573, 0.017857142857142856, + 0.19642857142857142, 0.017857142857142856, + 0.19642857142857142, 0.017857142857142856, + 0.23214285714285715, 0.017857142857142856, + 0.23214285714285715, 0.017857142857142856, + 0.26785714285714285, 0.017857142857142856, + 0.26785714285714285, 0.017857142857142856, + 0.30357142857142855, 0.017857142857142856, + 0.30357142857142855, 0.017857142857142856, + 0.3392857142857143, 0.017857142857142856, + 0.3392857142857143, 0.017857142857142856, + 0.375, 0.017857142857142856, + 0.375, 0.017857142857142856, + 0.4107142857142857, 0.017857142857142856, + 0.4107142857142857, 0.017857142857142856, + 0.44642857142857145, 0.017857142857142856, + 0.44642857142857145, 0.017857142857142856, + 0.48214285714285715, 0.017857142857142856, + 0.48214285714285715, 0.017857142857142856, + 0.5178571428571429, 0.017857142857142856, + 0.5178571428571429, 0.017857142857142856, + 0.5535714285714286, 0.017857142857142856, + 0.5535714285714286, 0.017857142857142856, + 0.5892857142857143, 0.017857142857142856, + 0.5892857142857143, 0.017857142857142856, + 0.625, 0.017857142857142856, + 0.625, 0.017857142857142856, + 0.6607142857142857, 0.017857142857142856, + 0.6607142857142857, 0.017857142857142856, + 0.6964285714285714, 0.017857142857142856, + 0.6964285714285714, 0.017857142857142856, + 0.7321428571428571, 0.017857142857142856, + 0.7321428571428571, 0.017857142857142856, + 0.7678571428571429, 0.017857142857142856, + 0.7678571428571429, 0.017857142857142856, + 0.8035714285714286, 0.017857142857142856, + 0.8035714285714286, 0.017857142857142856, + 0.8392857142857143, 0.017857142857142856, + 0.8392857142857143, 0.017857142857142856, + 0.875, 0.017857142857142856, + 0.875, 0.017857142857142856, + 0.9107142857142857, 0.017857142857142856, + 0.9107142857142857, 0.017857142857142856, + 0.9464285714285714, 0.017857142857142856, + 0.9464285714285714, 0.017857142857142856, + 0.9821428571428571, 0.017857142857142856, + 0.9821428571428571, 0.017857142857142856, + 0.017857142857142856, 0.05357142857142857, + 0.017857142857142856, 0.05357142857142857, + 0.05357142857142857, 0.05357142857142857, + 0.05357142857142857, 0.05357142857142857, + 0.08928571428571429, 0.05357142857142857, + 0.08928571428571429, 0.05357142857142857, + 0.125, 0.05357142857142857, + 0.125, 0.05357142857142857, + 0.16071428571428573, 0.05357142857142857, + 0.16071428571428573, 0.05357142857142857, + 0.19642857142857142, 0.05357142857142857, + 0.19642857142857142, 0.05357142857142857, + 0.23214285714285715, 0.05357142857142857, + 0.23214285714285715, 0.05357142857142857, + 0.26785714285714285, 0.05357142857142857, + 0.26785714285714285, 0.05357142857142857, + 0.30357142857142855, 0.05357142857142857, + 0.30357142857142855, 0.05357142857142857, + 0.3392857142857143, 0.05357142857142857, + 0.3392857142857143, 0.05357142857142857, + 0.375, 0.05357142857142857, + 0.375, 0.05357142857142857, + 0.4107142857142857, 0.05357142857142857, + 0.4107142857142857, 0.05357142857142857, + 0.44642857142857145, 0.05357142857142857, + 0.44642857142857145, 0.05357142857142857, + 0.48214285714285715, 0.05357142857142857, + 0.48214285714285715, 0.05357142857142857, + 0.5178571428571429, 0.05357142857142857, + 0.5178571428571429, 0.05357142857142857, + 0.5535714285714286, 0.05357142857142857, + 0.5535714285714286, 0.05357142857142857, + 0.5892857142857143, 0.05357142857142857, + 0.5892857142857143, 0.05357142857142857, + 0.625, 0.05357142857142857, + 0.625, 0.05357142857142857, + 0.6607142857142857, 0.05357142857142857, + 0.6607142857142857, 0.05357142857142857, + 0.6964285714285714, 0.05357142857142857, + 0.6964285714285714, 0.05357142857142857, + 0.7321428571428571, 0.05357142857142857, + 0.7321428571428571, 0.05357142857142857, + 0.7678571428571429, 0.05357142857142857, + 0.7678571428571429, 0.05357142857142857, + 0.8035714285714286, 0.05357142857142857, + 0.8035714285714286, 0.05357142857142857, + 0.8392857142857143, 0.05357142857142857, + 0.8392857142857143, 0.05357142857142857, + 0.875, 0.05357142857142857, + 0.875, 0.05357142857142857, + 0.9107142857142857, 0.05357142857142857, + 0.9107142857142857, 0.05357142857142857, + 0.9464285714285714, 0.05357142857142857, + 0.9464285714285714, 0.05357142857142857, + 0.9821428571428571, 0.05357142857142857, + 0.9821428571428571, 0.05357142857142857, + 0.017857142857142856, 0.08928571428571429, + 0.017857142857142856, 0.08928571428571429, + 0.05357142857142857, 0.08928571428571429, + 0.05357142857142857, 0.08928571428571429, + 0.08928571428571429, 0.08928571428571429, + 0.08928571428571429, 0.08928571428571429, + 0.125, 0.08928571428571429, + 0.125, 0.08928571428571429, + 0.16071428571428573, 0.08928571428571429, + 0.16071428571428573, 0.08928571428571429, + 0.19642857142857142, 0.08928571428571429, + 0.19642857142857142, 0.08928571428571429, + 0.23214285714285715, 0.08928571428571429, + 0.23214285714285715, 0.08928571428571429, + 0.26785714285714285, 0.08928571428571429, + 0.26785714285714285, 0.08928571428571429, + 0.30357142857142855, 0.08928571428571429, + 0.30357142857142855, 0.08928571428571429, + 0.3392857142857143, 0.08928571428571429, + 0.3392857142857143, 0.08928571428571429, + 0.375, 0.08928571428571429, + 0.375, 0.08928571428571429, + 0.4107142857142857, 0.08928571428571429, + 0.4107142857142857, 0.08928571428571429, + 0.44642857142857145, 0.08928571428571429, + 0.44642857142857145, 0.08928571428571429, + 0.48214285714285715, 0.08928571428571429, + 0.48214285714285715, 0.08928571428571429, + 0.5178571428571429, 0.08928571428571429, + 0.5178571428571429, 0.08928571428571429, + 0.5535714285714286, 0.08928571428571429, + 0.5535714285714286, 0.08928571428571429, + 0.5892857142857143, 0.08928571428571429, + 0.5892857142857143, 0.08928571428571429, + 0.625, 0.08928571428571429, + 0.625, 0.08928571428571429, + 0.6607142857142857, 0.08928571428571429, + 0.6607142857142857, 0.08928571428571429, + 0.6964285714285714, 0.08928571428571429, + 0.6964285714285714, 0.08928571428571429, + 0.7321428571428571, 0.08928571428571429, + 0.7321428571428571, 0.08928571428571429, + 0.7678571428571429, 0.08928571428571429, + 0.7678571428571429, 0.08928571428571429, + 0.8035714285714286, 0.08928571428571429, + 0.8035714285714286, 0.08928571428571429, + 0.8392857142857143, 0.08928571428571429, + 0.8392857142857143, 0.08928571428571429, + 0.875, 0.08928571428571429, + 0.875, 0.08928571428571429, + 0.9107142857142857, 0.08928571428571429, + 0.9107142857142857, 0.08928571428571429, + 0.9464285714285714, 0.08928571428571429, + 0.9464285714285714, 0.08928571428571429, + 0.9821428571428571, 0.08928571428571429, + 0.9821428571428571, 0.08928571428571429, + 0.017857142857142856, 0.125, + 0.017857142857142856, 0.125, + 0.05357142857142857, 0.125, + 0.05357142857142857, 0.125, + 0.08928571428571429, 0.125, + 0.08928571428571429, 0.125, + 0.125, 0.125, + 0.125, 0.125, + 0.16071428571428573, 0.125, + 0.16071428571428573, 0.125, + 0.19642857142857142, 0.125, + 0.19642857142857142, 0.125, + 0.23214285714285715, 0.125, + 0.23214285714285715, 0.125, + 0.26785714285714285, 0.125, + 0.26785714285714285, 0.125, + 0.30357142857142855, 0.125, + 0.30357142857142855, 0.125, + 0.3392857142857143, 0.125, + 0.3392857142857143, 0.125, + 0.375, 0.125, + 0.375, 0.125, + 0.4107142857142857, 0.125, + 0.4107142857142857, 0.125, + 0.44642857142857145, 0.125, + 0.44642857142857145, 0.125, + 0.48214285714285715, 0.125, + 0.48214285714285715, 0.125, + 0.5178571428571429, 0.125, + 0.5178571428571429, 0.125, + 0.5535714285714286, 0.125, + 0.5535714285714286, 0.125, + 0.5892857142857143, 0.125, + 0.5892857142857143, 0.125, + 0.625, 0.125, + 0.625, 0.125, + 0.6607142857142857, 0.125, + 0.6607142857142857, 0.125, + 0.6964285714285714, 0.125, + 0.6964285714285714, 0.125, + 0.7321428571428571, 0.125, + 0.7321428571428571, 0.125, + 0.7678571428571429, 0.125, + 0.7678571428571429, 0.125, + 0.8035714285714286, 0.125, + 0.8035714285714286, 0.125, + 0.8392857142857143, 0.125, + 0.8392857142857143, 0.125, + 0.875, 0.125, + 0.875, 0.125, + 0.9107142857142857, 0.125, + 0.9107142857142857, 0.125, + 0.9464285714285714, 0.125, + 0.9464285714285714, 0.125, + 0.9821428571428571, 0.125, + 0.9821428571428571, 0.125, + 0.017857142857142856, 0.16071428571428573, + 0.017857142857142856, 0.16071428571428573, + 0.05357142857142857, 0.16071428571428573, + 0.05357142857142857, 0.16071428571428573, + 0.08928571428571429, 0.16071428571428573, + 0.08928571428571429, 0.16071428571428573, + 0.125, 0.16071428571428573, + 0.125, 0.16071428571428573, + 0.16071428571428573, 0.16071428571428573, + 0.16071428571428573, 0.16071428571428573, + 0.19642857142857142, 0.16071428571428573, + 0.19642857142857142, 0.16071428571428573, + 0.23214285714285715, 0.16071428571428573, + 0.23214285714285715, 0.16071428571428573, + 0.26785714285714285, 0.16071428571428573, + 0.26785714285714285, 0.16071428571428573, + 0.30357142857142855, 0.16071428571428573, + 0.30357142857142855, 0.16071428571428573, + 0.3392857142857143, 0.16071428571428573, + 0.3392857142857143, 0.16071428571428573, + 0.375, 0.16071428571428573, + 0.375, 0.16071428571428573, + 0.4107142857142857, 0.16071428571428573, + 0.4107142857142857, 0.16071428571428573, + 0.44642857142857145, 0.16071428571428573, + 0.44642857142857145, 0.16071428571428573, + 0.48214285714285715, 0.16071428571428573, + 0.48214285714285715, 0.16071428571428573, + 0.5178571428571429, 0.16071428571428573, + 0.5178571428571429, 0.16071428571428573, + 0.5535714285714286, 0.16071428571428573, + 0.5535714285714286, 0.16071428571428573, + 0.5892857142857143, 0.16071428571428573, + 0.5892857142857143, 0.16071428571428573, + 0.625, 0.16071428571428573, + 0.625, 0.16071428571428573, + 0.6607142857142857, 0.16071428571428573, + 0.6607142857142857, 0.16071428571428573, + 0.6964285714285714, 0.16071428571428573, + 0.6964285714285714, 0.16071428571428573, + 0.7321428571428571, 0.16071428571428573, + 0.7321428571428571, 0.16071428571428573, + 0.7678571428571429, 0.16071428571428573, + 0.7678571428571429, 0.16071428571428573, + 0.8035714285714286, 0.16071428571428573, + 0.8035714285714286, 0.16071428571428573, + 0.8392857142857143, 0.16071428571428573, + 0.8392857142857143, 0.16071428571428573, + 0.875, 0.16071428571428573, + 0.875, 0.16071428571428573, + 0.9107142857142857, 0.16071428571428573, + 0.9107142857142857, 0.16071428571428573, + 0.9464285714285714, 0.16071428571428573, + 0.9464285714285714, 0.16071428571428573, + 0.9821428571428571, 0.16071428571428573, + 0.9821428571428571, 0.16071428571428573, + 0.017857142857142856, 0.19642857142857142, + 0.017857142857142856, 0.19642857142857142, + 0.05357142857142857, 0.19642857142857142, + 0.05357142857142857, 0.19642857142857142, + 0.08928571428571429, 0.19642857142857142, + 0.08928571428571429, 0.19642857142857142, + 0.125, 0.19642857142857142, + 0.125, 0.19642857142857142, + 0.16071428571428573, 0.19642857142857142, + 0.16071428571428573, 0.19642857142857142, + 0.19642857142857142, 0.19642857142857142, + 0.19642857142857142, 0.19642857142857142, + 0.23214285714285715, 0.19642857142857142, + 0.23214285714285715, 0.19642857142857142, + 0.26785714285714285, 0.19642857142857142, + 0.26785714285714285, 0.19642857142857142, + 0.30357142857142855, 0.19642857142857142, + 0.30357142857142855, 0.19642857142857142, + 0.3392857142857143, 0.19642857142857142, + 0.3392857142857143, 0.19642857142857142, + 0.375, 0.19642857142857142, + 0.375, 0.19642857142857142, + 0.4107142857142857, 0.19642857142857142, + 0.4107142857142857, 0.19642857142857142, + 0.44642857142857145, 0.19642857142857142, + 0.44642857142857145, 0.19642857142857142, + 0.48214285714285715, 0.19642857142857142, + 0.48214285714285715, 0.19642857142857142, + 0.5178571428571429, 0.19642857142857142, + 0.5178571428571429, 0.19642857142857142, + 0.5535714285714286, 0.19642857142857142, + 0.5535714285714286, 0.19642857142857142, + 0.5892857142857143, 0.19642857142857142, + 0.5892857142857143, 0.19642857142857142, + 0.625, 0.19642857142857142, + 0.625, 0.19642857142857142, + 0.6607142857142857, 0.19642857142857142, + 0.6607142857142857, 0.19642857142857142, + 0.6964285714285714, 0.19642857142857142, + 0.6964285714285714, 0.19642857142857142, + 0.7321428571428571, 0.19642857142857142, + 0.7321428571428571, 0.19642857142857142, + 0.7678571428571429, 0.19642857142857142, + 0.7678571428571429, 0.19642857142857142, + 0.8035714285714286, 0.19642857142857142, + 0.8035714285714286, 0.19642857142857142, + 0.8392857142857143, 0.19642857142857142, + 0.8392857142857143, 0.19642857142857142, + 0.875, 0.19642857142857142, + 0.875, 0.19642857142857142, + 0.9107142857142857, 0.19642857142857142, + 0.9107142857142857, 0.19642857142857142, + 0.9464285714285714, 0.19642857142857142, + 0.9464285714285714, 0.19642857142857142, + 0.9821428571428571, 0.19642857142857142, + 0.9821428571428571, 0.19642857142857142, + 0.017857142857142856, 0.23214285714285715, + 0.017857142857142856, 0.23214285714285715, + 0.05357142857142857, 0.23214285714285715, + 0.05357142857142857, 0.23214285714285715, + 0.08928571428571429, 0.23214285714285715, + 0.08928571428571429, 0.23214285714285715, + 0.125, 0.23214285714285715, + 0.125, 0.23214285714285715, + 0.16071428571428573, 0.23214285714285715, + 0.16071428571428573, 0.23214285714285715, + 0.19642857142857142, 0.23214285714285715, + 0.19642857142857142, 0.23214285714285715, + 0.23214285714285715, 0.23214285714285715, + 0.23214285714285715, 0.23214285714285715, + 0.26785714285714285, 0.23214285714285715, + 0.26785714285714285, 0.23214285714285715, + 0.30357142857142855, 0.23214285714285715, + 0.30357142857142855, 0.23214285714285715, + 0.3392857142857143, 0.23214285714285715, + 0.3392857142857143, 0.23214285714285715, + 0.375, 0.23214285714285715, + 0.375, 0.23214285714285715, + 0.4107142857142857, 0.23214285714285715, + 0.4107142857142857, 0.23214285714285715, + 0.44642857142857145, 0.23214285714285715, + 0.44642857142857145, 0.23214285714285715, + 0.48214285714285715, 0.23214285714285715, + 0.48214285714285715, 0.23214285714285715, + 0.5178571428571429, 0.23214285714285715, + 0.5178571428571429, 0.23214285714285715, + 0.5535714285714286, 0.23214285714285715, + 0.5535714285714286, 0.23214285714285715, + 0.5892857142857143, 0.23214285714285715, + 0.5892857142857143, 0.23214285714285715, + 0.625, 0.23214285714285715, + 0.625, 0.23214285714285715, + 0.6607142857142857, 0.23214285714285715, + 0.6607142857142857, 0.23214285714285715, + 0.6964285714285714, 0.23214285714285715, + 0.6964285714285714, 0.23214285714285715, + 0.7321428571428571, 0.23214285714285715, + 0.7321428571428571, 0.23214285714285715, + 0.7678571428571429, 0.23214285714285715, + 0.7678571428571429, 0.23214285714285715, + 0.8035714285714286, 0.23214285714285715, + 0.8035714285714286, 0.23214285714285715, + 0.8392857142857143, 0.23214285714285715, + 0.8392857142857143, 0.23214285714285715, + 0.875, 0.23214285714285715, + 0.875, 0.23214285714285715, + 0.9107142857142857, 0.23214285714285715, + 0.9107142857142857, 0.23214285714285715, + 0.9464285714285714, 0.23214285714285715, + 0.9464285714285714, 0.23214285714285715, + 0.9821428571428571, 0.23214285714285715, + 0.9821428571428571, 0.23214285714285715, + 0.017857142857142856, 0.26785714285714285, + 0.017857142857142856, 0.26785714285714285, + 0.05357142857142857, 0.26785714285714285, + 0.05357142857142857, 0.26785714285714285, + 0.08928571428571429, 0.26785714285714285, + 0.08928571428571429, 0.26785714285714285, + 0.125, 0.26785714285714285, + 0.125, 0.26785714285714285, + 0.16071428571428573, 0.26785714285714285, + 0.16071428571428573, 0.26785714285714285, + 0.19642857142857142, 0.26785714285714285, + 0.19642857142857142, 0.26785714285714285, + 0.23214285714285715, 0.26785714285714285, + 0.23214285714285715, 0.26785714285714285, + 0.26785714285714285, 0.26785714285714285, + 0.26785714285714285, 0.26785714285714285, + 0.30357142857142855, 0.26785714285714285, + 0.30357142857142855, 0.26785714285714285, + 0.3392857142857143, 0.26785714285714285, + 0.3392857142857143, 0.26785714285714285, + 0.375, 0.26785714285714285, + 0.375, 0.26785714285714285, + 0.4107142857142857, 0.26785714285714285, + 0.4107142857142857, 0.26785714285714285, + 0.44642857142857145, 0.26785714285714285, + 0.44642857142857145, 0.26785714285714285, + 0.48214285714285715, 0.26785714285714285, + 0.48214285714285715, 0.26785714285714285, + 0.5178571428571429, 0.26785714285714285, + 0.5178571428571429, 0.26785714285714285, + 0.5535714285714286, 0.26785714285714285, + 0.5535714285714286, 0.26785714285714285, + 0.5892857142857143, 0.26785714285714285, + 0.5892857142857143, 0.26785714285714285, + 0.625, 0.26785714285714285, + 0.625, 0.26785714285714285, + 0.6607142857142857, 0.26785714285714285, + 0.6607142857142857, 0.26785714285714285, + 0.6964285714285714, 0.26785714285714285, + 0.6964285714285714, 0.26785714285714285, + 0.7321428571428571, 0.26785714285714285, + 0.7321428571428571, 0.26785714285714285, + 0.7678571428571429, 0.26785714285714285, + 0.7678571428571429, 0.26785714285714285, + 0.8035714285714286, 0.26785714285714285, + 0.8035714285714286, 0.26785714285714285, + 0.8392857142857143, 0.26785714285714285, + 0.8392857142857143, 0.26785714285714285, + 0.875, 0.26785714285714285, + 0.875, 0.26785714285714285, + 0.9107142857142857, 0.26785714285714285, + 0.9107142857142857, 0.26785714285714285, + 0.9464285714285714, 0.26785714285714285, + 0.9464285714285714, 0.26785714285714285, + 0.9821428571428571, 0.26785714285714285, + 0.9821428571428571, 0.26785714285714285, + 0.017857142857142856, 0.30357142857142855, + 0.017857142857142856, 0.30357142857142855, + 0.05357142857142857, 0.30357142857142855, + 0.05357142857142857, 0.30357142857142855, + 0.08928571428571429, 0.30357142857142855, + 0.08928571428571429, 0.30357142857142855, + 0.125, 0.30357142857142855, + 0.125, 0.30357142857142855, + 0.16071428571428573, 0.30357142857142855, + 0.16071428571428573, 0.30357142857142855, + 0.19642857142857142, 0.30357142857142855, + 0.19642857142857142, 0.30357142857142855, + 0.23214285714285715, 0.30357142857142855, + 0.23214285714285715, 0.30357142857142855, + 0.26785714285714285, 0.30357142857142855, + 0.26785714285714285, 0.30357142857142855, + 0.30357142857142855, 0.30357142857142855, + 0.30357142857142855, 0.30357142857142855, + 0.3392857142857143, 0.30357142857142855, + 0.3392857142857143, 0.30357142857142855, + 0.375, 0.30357142857142855, + 0.375, 0.30357142857142855, + 0.4107142857142857, 0.30357142857142855, + 0.4107142857142857, 0.30357142857142855, + 0.44642857142857145, 0.30357142857142855, + 0.44642857142857145, 0.30357142857142855, + 0.48214285714285715, 0.30357142857142855, + 0.48214285714285715, 0.30357142857142855, + 0.5178571428571429, 0.30357142857142855, + 0.5178571428571429, 0.30357142857142855, + 0.5535714285714286, 0.30357142857142855, + 0.5535714285714286, 0.30357142857142855, + 0.5892857142857143, 0.30357142857142855, + 0.5892857142857143, 0.30357142857142855, + 0.625, 0.30357142857142855, + 0.625, 0.30357142857142855, + 0.6607142857142857, 0.30357142857142855, + 0.6607142857142857, 0.30357142857142855, + 0.6964285714285714, 0.30357142857142855, + 0.6964285714285714, 0.30357142857142855, + 0.7321428571428571, 0.30357142857142855, + 0.7321428571428571, 0.30357142857142855, + 0.7678571428571429, 0.30357142857142855, + 0.7678571428571429, 0.30357142857142855, + 0.8035714285714286, 0.30357142857142855, + 0.8035714285714286, 0.30357142857142855, + 0.8392857142857143, 0.30357142857142855, + 0.8392857142857143, 0.30357142857142855, + 0.875, 0.30357142857142855, + 0.875, 0.30357142857142855, + 0.9107142857142857, 0.30357142857142855, + 0.9107142857142857, 0.30357142857142855, + 0.9464285714285714, 0.30357142857142855, + 0.9464285714285714, 0.30357142857142855, + 0.9821428571428571, 0.30357142857142855, + 0.9821428571428571, 0.30357142857142855, + 0.017857142857142856, 0.3392857142857143, + 0.017857142857142856, 0.3392857142857143, + 0.05357142857142857, 0.3392857142857143, + 0.05357142857142857, 0.3392857142857143, + 0.08928571428571429, 0.3392857142857143, + 0.08928571428571429, 0.3392857142857143, + 0.125, 0.3392857142857143, + 0.125, 0.3392857142857143, + 0.16071428571428573, 0.3392857142857143, + 0.16071428571428573, 0.3392857142857143, + 0.19642857142857142, 0.3392857142857143, + 0.19642857142857142, 0.3392857142857143, + 0.23214285714285715, 0.3392857142857143, + 0.23214285714285715, 0.3392857142857143, + 0.26785714285714285, 0.3392857142857143, + 0.26785714285714285, 0.3392857142857143, + 0.30357142857142855, 0.3392857142857143, + 0.30357142857142855, 0.3392857142857143, + 0.3392857142857143, 0.3392857142857143, + 0.3392857142857143, 0.3392857142857143, + 0.375, 0.3392857142857143, + 0.375, 0.3392857142857143, + 0.4107142857142857, 0.3392857142857143, + 0.4107142857142857, 0.3392857142857143, + 0.44642857142857145, 0.3392857142857143, + 0.44642857142857145, 0.3392857142857143, + 0.48214285714285715, 0.3392857142857143, + 0.48214285714285715, 0.3392857142857143, + 0.5178571428571429, 0.3392857142857143, + 0.5178571428571429, 0.3392857142857143, + 0.5535714285714286, 0.3392857142857143, + 0.5535714285714286, 0.3392857142857143, + 0.5892857142857143, 0.3392857142857143, + 0.5892857142857143, 0.3392857142857143, + 0.625, 0.3392857142857143, + 0.625, 0.3392857142857143, + 0.6607142857142857, 0.3392857142857143, + 0.6607142857142857, 0.3392857142857143, + 0.6964285714285714, 0.3392857142857143, + 0.6964285714285714, 0.3392857142857143, + 0.7321428571428571, 0.3392857142857143, + 0.7321428571428571, 0.3392857142857143, + 0.7678571428571429, 0.3392857142857143, + 0.7678571428571429, 0.3392857142857143, + 0.8035714285714286, 0.3392857142857143, + 0.8035714285714286, 0.3392857142857143, + 0.8392857142857143, 0.3392857142857143, + 0.8392857142857143, 0.3392857142857143, + 0.875, 0.3392857142857143, + 0.875, 0.3392857142857143, + 0.9107142857142857, 0.3392857142857143, + 0.9107142857142857, 0.3392857142857143, + 0.9464285714285714, 0.3392857142857143, + 0.9464285714285714, 0.3392857142857143, + 0.9821428571428571, 0.3392857142857143, + 0.9821428571428571, 0.3392857142857143, + 0.017857142857142856, 0.375, + 0.017857142857142856, 0.375, + 0.05357142857142857, 0.375, + 0.05357142857142857, 0.375, + 0.08928571428571429, 0.375, + 0.08928571428571429, 0.375, + 0.125, 0.375, + 0.125, 0.375, + 0.16071428571428573, 0.375, + 0.16071428571428573, 0.375, + 0.19642857142857142, 0.375, + 0.19642857142857142, 0.375, + 0.23214285714285715, 0.375, + 0.23214285714285715, 0.375, + 0.26785714285714285, 0.375, + 0.26785714285714285, 0.375, + 0.30357142857142855, 0.375, + 0.30357142857142855, 0.375, + 0.3392857142857143, 0.375, + 0.3392857142857143, 0.375, + 0.375, 0.375, + 0.375, 0.375, + 0.4107142857142857, 0.375, + 0.4107142857142857, 0.375, + 0.44642857142857145, 0.375, + 0.44642857142857145, 0.375, + 0.48214285714285715, 0.375, + 0.48214285714285715, 0.375, + 0.5178571428571429, 0.375, + 0.5178571428571429, 0.375, + 0.5535714285714286, 0.375, + 0.5535714285714286, 0.375, + 0.5892857142857143, 0.375, + 0.5892857142857143, 0.375, + 0.625, 0.375, + 0.625, 0.375, + 0.6607142857142857, 0.375, + 0.6607142857142857, 0.375, + 0.6964285714285714, 0.375, + 0.6964285714285714, 0.375, + 0.7321428571428571, 0.375, + 0.7321428571428571, 0.375, + 0.7678571428571429, 0.375, + 0.7678571428571429, 0.375, + 0.8035714285714286, 0.375, + 0.8035714285714286, 0.375, + 0.8392857142857143, 0.375, + 0.8392857142857143, 0.375, + 0.875, 0.375, + 0.875, 0.375, + 0.9107142857142857, 0.375, + 0.9107142857142857, 0.375, + 0.9464285714285714, 0.375, + 0.9464285714285714, 0.375, + 0.9821428571428571, 0.375, + 0.9821428571428571, 0.375, + 0.017857142857142856, 0.4107142857142857, + 0.017857142857142856, 0.4107142857142857, + 0.05357142857142857, 0.4107142857142857, + 0.05357142857142857, 0.4107142857142857, + 0.08928571428571429, 0.4107142857142857, + 0.08928571428571429, 0.4107142857142857, + 0.125, 0.4107142857142857, + 0.125, 0.4107142857142857, + 0.16071428571428573, 0.4107142857142857, + 0.16071428571428573, 0.4107142857142857, + 0.19642857142857142, 0.4107142857142857, + 0.19642857142857142, 0.4107142857142857, + 0.23214285714285715, 0.4107142857142857, + 0.23214285714285715, 0.4107142857142857, + 0.26785714285714285, 0.4107142857142857, + 0.26785714285714285, 0.4107142857142857, + 0.30357142857142855, 0.4107142857142857, + 0.30357142857142855, 0.4107142857142857, + 0.3392857142857143, 0.4107142857142857, + 0.3392857142857143, 0.4107142857142857, + 0.375, 0.4107142857142857, + 0.375, 0.4107142857142857, + 0.4107142857142857, 0.4107142857142857, + 0.4107142857142857, 0.4107142857142857, + 0.44642857142857145, 0.4107142857142857, + 0.44642857142857145, 0.4107142857142857, + 0.48214285714285715, 0.4107142857142857, + 0.48214285714285715, 0.4107142857142857, + 0.5178571428571429, 0.4107142857142857, + 0.5178571428571429, 0.4107142857142857, + 0.5535714285714286, 0.4107142857142857, + 0.5535714285714286, 0.4107142857142857, + 0.5892857142857143, 0.4107142857142857, + 0.5892857142857143, 0.4107142857142857, + 0.625, 0.4107142857142857, + 0.625, 0.4107142857142857, + 0.6607142857142857, 0.4107142857142857, + 0.6607142857142857, 0.4107142857142857, + 0.6964285714285714, 0.4107142857142857, + 0.6964285714285714, 0.4107142857142857, + 0.7321428571428571, 0.4107142857142857, + 0.7321428571428571, 0.4107142857142857, + 0.7678571428571429, 0.4107142857142857, + 0.7678571428571429, 0.4107142857142857, + 0.8035714285714286, 0.4107142857142857, + 0.8035714285714286, 0.4107142857142857, + 0.8392857142857143, 0.4107142857142857, + 0.8392857142857143, 0.4107142857142857, + 0.875, 0.4107142857142857, + 0.875, 0.4107142857142857, + 0.9107142857142857, 0.4107142857142857, + 0.9107142857142857, 0.4107142857142857, + 0.9464285714285714, 0.4107142857142857, + 0.9464285714285714, 0.4107142857142857, + 0.9821428571428571, 0.4107142857142857, + 0.9821428571428571, 0.4107142857142857, + 0.017857142857142856, 0.44642857142857145, + 0.017857142857142856, 0.44642857142857145, + 0.05357142857142857, 0.44642857142857145, + 0.05357142857142857, 0.44642857142857145, + 0.08928571428571429, 0.44642857142857145, + 0.08928571428571429, 0.44642857142857145, + 0.125, 0.44642857142857145, + 0.125, 0.44642857142857145, + 0.16071428571428573, 0.44642857142857145, + 0.16071428571428573, 0.44642857142857145, + 0.19642857142857142, 0.44642857142857145, + 0.19642857142857142, 0.44642857142857145, + 0.23214285714285715, 0.44642857142857145, + 0.23214285714285715, 0.44642857142857145, + 0.26785714285714285, 0.44642857142857145, + 0.26785714285714285, 0.44642857142857145, + 0.30357142857142855, 0.44642857142857145, + 0.30357142857142855, 0.44642857142857145, + 0.3392857142857143, 0.44642857142857145, + 0.3392857142857143, 0.44642857142857145, + 0.375, 0.44642857142857145, + 0.375, 0.44642857142857145, + 0.4107142857142857, 0.44642857142857145, + 0.4107142857142857, 0.44642857142857145, + 0.44642857142857145, 0.44642857142857145, + 0.44642857142857145, 0.44642857142857145, + 0.48214285714285715, 0.44642857142857145, + 0.48214285714285715, 0.44642857142857145, + 0.5178571428571429, 0.44642857142857145, + 0.5178571428571429, 0.44642857142857145, + 0.5535714285714286, 0.44642857142857145, + 0.5535714285714286, 0.44642857142857145, + 0.5892857142857143, 0.44642857142857145, + 0.5892857142857143, 0.44642857142857145, + 0.625, 0.44642857142857145, + 0.625, 0.44642857142857145, + 0.6607142857142857, 0.44642857142857145, + 0.6607142857142857, 0.44642857142857145, + 0.6964285714285714, 0.44642857142857145, + 0.6964285714285714, 0.44642857142857145, + 0.7321428571428571, 0.44642857142857145, + 0.7321428571428571, 0.44642857142857145, + 0.7678571428571429, 0.44642857142857145, + 0.7678571428571429, 0.44642857142857145, + 0.8035714285714286, 0.44642857142857145, + 0.8035714285714286, 0.44642857142857145, + 0.8392857142857143, 0.44642857142857145, + 0.8392857142857143, 0.44642857142857145, + 0.875, 0.44642857142857145, + 0.875, 0.44642857142857145, + 0.9107142857142857, 0.44642857142857145, + 0.9107142857142857, 0.44642857142857145, + 0.9464285714285714, 0.44642857142857145, + 0.9464285714285714, 0.44642857142857145, + 0.9821428571428571, 0.44642857142857145, + 0.9821428571428571, 0.44642857142857145, + 0.017857142857142856, 0.48214285714285715, + 0.017857142857142856, 0.48214285714285715, + 0.05357142857142857, 0.48214285714285715, + 0.05357142857142857, 0.48214285714285715, + 0.08928571428571429, 0.48214285714285715, + 0.08928571428571429, 0.48214285714285715, + 0.125, 0.48214285714285715, + 0.125, 0.48214285714285715, + 0.16071428571428573, 0.48214285714285715, + 0.16071428571428573, 0.48214285714285715, + 0.19642857142857142, 0.48214285714285715, + 0.19642857142857142, 0.48214285714285715, + 0.23214285714285715, 0.48214285714285715, + 0.23214285714285715, 0.48214285714285715, + 0.26785714285714285, 0.48214285714285715, + 0.26785714285714285, 0.48214285714285715, + 0.30357142857142855, 0.48214285714285715, + 0.30357142857142855, 0.48214285714285715, + 0.3392857142857143, 0.48214285714285715, + 0.3392857142857143, 0.48214285714285715, + 0.375, 0.48214285714285715, + 0.375, 0.48214285714285715, + 0.4107142857142857, 0.48214285714285715, + 0.4107142857142857, 0.48214285714285715, + 0.44642857142857145, 0.48214285714285715, + 0.44642857142857145, 0.48214285714285715, + 0.48214285714285715, 0.48214285714285715, + 0.48214285714285715, 0.48214285714285715, + 0.5178571428571429, 0.48214285714285715, + 0.5178571428571429, 0.48214285714285715, + 0.5535714285714286, 0.48214285714285715, + 0.5535714285714286, 0.48214285714285715, + 0.5892857142857143, 0.48214285714285715, + 0.5892857142857143, 0.48214285714285715, + 0.625, 0.48214285714285715, + 0.625, 0.48214285714285715, + 0.6607142857142857, 0.48214285714285715, + 0.6607142857142857, 0.48214285714285715, + 0.6964285714285714, 0.48214285714285715, + 0.6964285714285714, 0.48214285714285715, + 0.7321428571428571, 0.48214285714285715, + 0.7321428571428571, 0.48214285714285715, + 0.7678571428571429, 0.48214285714285715, + 0.7678571428571429, 0.48214285714285715, + 0.8035714285714286, 0.48214285714285715, + 0.8035714285714286, 0.48214285714285715, + 0.8392857142857143, 0.48214285714285715, + 0.8392857142857143, 0.48214285714285715, + 0.875, 0.48214285714285715, + 0.875, 0.48214285714285715, + 0.9107142857142857, 0.48214285714285715, + 0.9107142857142857, 0.48214285714285715, + 0.9464285714285714, 0.48214285714285715, + 0.9464285714285714, 0.48214285714285715, + 0.9821428571428571, 0.48214285714285715, + 0.9821428571428571, 0.48214285714285715, + 0.017857142857142856, 0.5178571428571429, + 0.017857142857142856, 0.5178571428571429, + 0.05357142857142857, 0.5178571428571429, + 0.05357142857142857, 0.5178571428571429, + 0.08928571428571429, 0.5178571428571429, + 0.08928571428571429, 0.5178571428571429, + 0.125, 0.5178571428571429, + 0.125, 0.5178571428571429, + 0.16071428571428573, 0.5178571428571429, + 0.16071428571428573, 0.5178571428571429, + 0.19642857142857142, 0.5178571428571429, + 0.19642857142857142, 0.5178571428571429, + 0.23214285714285715, 0.5178571428571429, + 0.23214285714285715, 0.5178571428571429, + 0.26785714285714285, 0.5178571428571429, + 0.26785714285714285, 0.5178571428571429, + 0.30357142857142855, 0.5178571428571429, + 0.30357142857142855, 0.5178571428571429, + 0.3392857142857143, 0.5178571428571429, + 0.3392857142857143, 0.5178571428571429, + 0.375, 0.5178571428571429, + 0.375, 0.5178571428571429, + 0.4107142857142857, 0.5178571428571429, + 0.4107142857142857, 0.5178571428571429, + 0.44642857142857145, 0.5178571428571429, + 0.44642857142857145, 0.5178571428571429, + 0.48214285714285715, 0.5178571428571429, + 0.48214285714285715, 0.5178571428571429, + 0.5178571428571429, 0.5178571428571429, + 0.5178571428571429, 0.5178571428571429, + 0.5535714285714286, 0.5178571428571429, + 0.5535714285714286, 0.5178571428571429, + 0.5892857142857143, 0.5178571428571429, + 0.5892857142857143, 0.5178571428571429, + 0.625, 0.5178571428571429, + 0.625, 0.5178571428571429, + 0.6607142857142857, 0.5178571428571429, + 0.6607142857142857, 0.5178571428571429, + 0.6964285714285714, 0.5178571428571429, + 0.6964285714285714, 0.5178571428571429, + 0.7321428571428571, 0.5178571428571429, + 0.7321428571428571, 0.5178571428571429, + 0.7678571428571429, 0.5178571428571429, + 0.7678571428571429, 0.5178571428571429, + 0.8035714285714286, 0.5178571428571429, + 0.8035714285714286, 0.5178571428571429, + 0.8392857142857143, 0.5178571428571429, + 0.8392857142857143, 0.5178571428571429, + 0.875, 0.5178571428571429, + 0.875, 0.5178571428571429, + 0.9107142857142857, 0.5178571428571429, + 0.9107142857142857, 0.5178571428571429, + 0.9464285714285714, 0.5178571428571429, + 0.9464285714285714, 0.5178571428571429, + 0.9821428571428571, 0.5178571428571429, + 0.9821428571428571, 0.5178571428571429, + 0.017857142857142856, 0.5535714285714286, + 0.017857142857142856, 0.5535714285714286, + 0.05357142857142857, 0.5535714285714286, + 0.05357142857142857, 0.5535714285714286, + 0.08928571428571429, 0.5535714285714286, + 0.08928571428571429, 0.5535714285714286, + 0.125, 0.5535714285714286, + 0.125, 0.5535714285714286, + 0.16071428571428573, 0.5535714285714286, + 0.16071428571428573, 0.5535714285714286, + 0.19642857142857142, 0.5535714285714286, + 0.19642857142857142, 0.5535714285714286, + 0.23214285714285715, 0.5535714285714286, + 0.23214285714285715, 0.5535714285714286, + 0.26785714285714285, 0.5535714285714286, + 0.26785714285714285, 0.5535714285714286, + 0.30357142857142855, 0.5535714285714286, + 0.30357142857142855, 0.5535714285714286, + 0.3392857142857143, 0.5535714285714286, + 0.3392857142857143, 0.5535714285714286, + 0.375, 0.5535714285714286, + 0.375, 0.5535714285714286, + 0.4107142857142857, 0.5535714285714286, + 0.4107142857142857, 0.5535714285714286, + 0.44642857142857145, 0.5535714285714286, + 0.44642857142857145, 0.5535714285714286, + 0.48214285714285715, 0.5535714285714286, + 0.48214285714285715, 0.5535714285714286, + 0.5178571428571429, 0.5535714285714286, + 0.5178571428571429, 0.5535714285714286, + 0.5535714285714286, 0.5535714285714286, + 0.5535714285714286, 0.5535714285714286, + 0.5892857142857143, 0.5535714285714286, + 0.5892857142857143, 0.5535714285714286, + 0.625, 0.5535714285714286, + 0.625, 0.5535714285714286, + 0.6607142857142857, 0.5535714285714286, + 0.6607142857142857, 0.5535714285714286, + 0.6964285714285714, 0.5535714285714286, + 0.6964285714285714, 0.5535714285714286, + 0.7321428571428571, 0.5535714285714286, + 0.7321428571428571, 0.5535714285714286, + 0.7678571428571429, 0.5535714285714286, + 0.7678571428571429, 0.5535714285714286, + 0.8035714285714286, 0.5535714285714286, + 0.8035714285714286, 0.5535714285714286, + 0.8392857142857143, 0.5535714285714286, + 0.8392857142857143, 0.5535714285714286, + 0.875, 0.5535714285714286, + 0.875, 0.5535714285714286, + 0.9107142857142857, 0.5535714285714286, + 0.9107142857142857, 0.5535714285714286, + 0.9464285714285714, 0.5535714285714286, + 0.9464285714285714, 0.5535714285714286, + 0.9821428571428571, 0.5535714285714286, + 0.9821428571428571, 0.5535714285714286, + 0.017857142857142856, 0.5892857142857143, + 0.017857142857142856, 0.5892857142857143, + 0.05357142857142857, 0.5892857142857143, + 0.05357142857142857, 0.5892857142857143, + 0.08928571428571429, 0.5892857142857143, + 0.08928571428571429, 0.5892857142857143, + 0.125, 0.5892857142857143, + 0.125, 0.5892857142857143, + 0.16071428571428573, 0.5892857142857143, + 0.16071428571428573, 0.5892857142857143, + 0.19642857142857142, 0.5892857142857143, + 0.19642857142857142, 0.5892857142857143, + 0.23214285714285715, 0.5892857142857143, + 0.23214285714285715, 0.5892857142857143, + 0.26785714285714285, 0.5892857142857143, + 0.26785714285714285, 0.5892857142857143, + 0.30357142857142855, 0.5892857142857143, + 0.30357142857142855, 0.5892857142857143, + 0.3392857142857143, 0.5892857142857143, + 0.3392857142857143, 0.5892857142857143, + 0.375, 0.5892857142857143, + 0.375, 0.5892857142857143, + 0.4107142857142857, 0.5892857142857143, + 0.4107142857142857, 0.5892857142857143, + 0.44642857142857145, 0.5892857142857143, + 0.44642857142857145, 0.5892857142857143, + 0.48214285714285715, 0.5892857142857143, + 0.48214285714285715, 0.5892857142857143, + 0.5178571428571429, 0.5892857142857143, + 0.5178571428571429, 0.5892857142857143, + 0.5535714285714286, 0.5892857142857143, + 0.5535714285714286, 0.5892857142857143, + 0.5892857142857143, 0.5892857142857143, + 0.5892857142857143, 0.5892857142857143, + 0.625, 0.5892857142857143, + 0.625, 0.5892857142857143, + 0.6607142857142857, 0.5892857142857143, + 0.6607142857142857, 0.5892857142857143, + 0.6964285714285714, 0.5892857142857143, + 0.6964285714285714, 0.5892857142857143, + 0.7321428571428571, 0.5892857142857143, + 0.7321428571428571, 0.5892857142857143, + 0.7678571428571429, 0.5892857142857143, + 0.7678571428571429, 0.5892857142857143, + 0.8035714285714286, 0.5892857142857143, + 0.8035714285714286, 0.5892857142857143, + 0.8392857142857143, 0.5892857142857143, + 0.8392857142857143, 0.5892857142857143, + 0.875, 0.5892857142857143, + 0.875, 0.5892857142857143, + 0.9107142857142857, 0.5892857142857143, + 0.9107142857142857, 0.5892857142857143, + 0.9464285714285714, 0.5892857142857143, + 0.9464285714285714, 0.5892857142857143, + 0.9821428571428571, 0.5892857142857143, + 0.9821428571428571, 0.5892857142857143, + 0.017857142857142856, 0.625, + 0.017857142857142856, 0.625, + 0.05357142857142857, 0.625, + 0.05357142857142857, 0.625, + 0.08928571428571429, 0.625, + 0.08928571428571429, 0.625, + 0.125, 0.625, + 0.125, 0.625, + 0.16071428571428573, 0.625, + 0.16071428571428573, 0.625, + 0.19642857142857142, 0.625, + 0.19642857142857142, 0.625, + 0.23214285714285715, 0.625, + 0.23214285714285715, 0.625, + 0.26785714285714285, 0.625, + 0.26785714285714285, 0.625, + 0.30357142857142855, 0.625, + 0.30357142857142855, 0.625, + 0.3392857142857143, 0.625, + 0.3392857142857143, 0.625, + 0.375, 0.625, + 0.375, 0.625, + 0.4107142857142857, 0.625, + 0.4107142857142857, 0.625, + 0.44642857142857145, 0.625, + 0.44642857142857145, 0.625, + 0.48214285714285715, 0.625, + 0.48214285714285715, 0.625, + 0.5178571428571429, 0.625, + 0.5178571428571429, 0.625, + 0.5535714285714286, 0.625, + 0.5535714285714286, 0.625, + 0.5892857142857143, 0.625, + 0.5892857142857143, 0.625, + 0.625, 0.625, + 0.625, 0.625, + 0.6607142857142857, 0.625, + 0.6607142857142857, 0.625, + 0.6964285714285714, 0.625, + 0.6964285714285714, 0.625, + 0.7321428571428571, 0.625, + 0.7321428571428571, 0.625, + 0.7678571428571429, 0.625, + 0.7678571428571429, 0.625, + 0.8035714285714286, 0.625, + 0.8035714285714286, 0.625, + 0.8392857142857143, 0.625, + 0.8392857142857143, 0.625, + 0.875, 0.625, + 0.875, 0.625, + 0.9107142857142857, 0.625, + 0.9107142857142857, 0.625, + 0.9464285714285714, 0.625, + 0.9464285714285714, 0.625, + 0.9821428571428571, 0.625, + 0.9821428571428571, 0.625, + 0.017857142857142856, 0.6607142857142857, + 0.017857142857142856, 0.6607142857142857, + 0.05357142857142857, 0.6607142857142857, + 0.05357142857142857, 0.6607142857142857, + 0.08928571428571429, 0.6607142857142857, + 0.08928571428571429, 0.6607142857142857, + 0.125, 0.6607142857142857, + 0.125, 0.6607142857142857, + 0.16071428571428573, 0.6607142857142857, + 0.16071428571428573, 0.6607142857142857, + 0.19642857142857142, 0.6607142857142857, + 0.19642857142857142, 0.6607142857142857, + 0.23214285714285715, 0.6607142857142857, + 0.23214285714285715, 0.6607142857142857, + 0.26785714285714285, 0.6607142857142857, + 0.26785714285714285, 0.6607142857142857, + 0.30357142857142855, 0.6607142857142857, + 0.30357142857142855, 0.6607142857142857, + 0.3392857142857143, 0.6607142857142857, + 0.3392857142857143, 0.6607142857142857, + 0.375, 0.6607142857142857, + 0.375, 0.6607142857142857, + 0.4107142857142857, 0.6607142857142857, + 0.4107142857142857, 0.6607142857142857, + 0.44642857142857145, 0.6607142857142857, + 0.44642857142857145, 0.6607142857142857, + 0.48214285714285715, 0.6607142857142857, + 0.48214285714285715, 0.6607142857142857, + 0.5178571428571429, 0.6607142857142857, + 0.5178571428571429, 0.6607142857142857, + 0.5535714285714286, 0.6607142857142857, + 0.5535714285714286, 0.6607142857142857, + 0.5892857142857143, 0.6607142857142857, + 0.5892857142857143, 0.6607142857142857, + 0.625, 0.6607142857142857, + 0.625, 0.6607142857142857, + 0.6607142857142857, 0.6607142857142857, + 0.6607142857142857, 0.6607142857142857, + 0.6964285714285714, 0.6607142857142857, + 0.6964285714285714, 0.6607142857142857, + 0.7321428571428571, 0.6607142857142857, + 0.7321428571428571, 0.6607142857142857, + 0.7678571428571429, 0.6607142857142857, + 0.7678571428571429, 0.6607142857142857, + 0.8035714285714286, 0.6607142857142857, + 0.8035714285714286, 0.6607142857142857, + 0.8392857142857143, 0.6607142857142857, + 0.8392857142857143, 0.6607142857142857, + 0.875, 0.6607142857142857, + 0.875, 0.6607142857142857, + 0.9107142857142857, 0.6607142857142857, + 0.9107142857142857, 0.6607142857142857, + 0.9464285714285714, 0.6607142857142857, + 0.9464285714285714, 0.6607142857142857, + 0.9821428571428571, 0.6607142857142857, + 0.9821428571428571, 0.6607142857142857, + 0.017857142857142856, 0.6964285714285714, + 0.017857142857142856, 0.6964285714285714, + 0.05357142857142857, 0.6964285714285714, + 0.05357142857142857, 0.6964285714285714, + 0.08928571428571429, 0.6964285714285714, + 0.08928571428571429, 0.6964285714285714, + 0.125, 0.6964285714285714, + 0.125, 0.6964285714285714, + 0.16071428571428573, 0.6964285714285714, + 0.16071428571428573, 0.6964285714285714, + 0.19642857142857142, 0.6964285714285714, + 0.19642857142857142, 0.6964285714285714, + 0.23214285714285715, 0.6964285714285714, + 0.23214285714285715, 0.6964285714285714, + 0.26785714285714285, 0.6964285714285714, + 0.26785714285714285, 0.6964285714285714, + 0.30357142857142855, 0.6964285714285714, + 0.30357142857142855, 0.6964285714285714, + 0.3392857142857143, 0.6964285714285714, + 0.3392857142857143, 0.6964285714285714, + 0.375, 0.6964285714285714, + 0.375, 0.6964285714285714, + 0.4107142857142857, 0.6964285714285714, + 0.4107142857142857, 0.6964285714285714, + 0.44642857142857145, 0.6964285714285714, + 0.44642857142857145, 0.6964285714285714, + 0.48214285714285715, 0.6964285714285714, + 0.48214285714285715, 0.6964285714285714, + 0.5178571428571429, 0.6964285714285714, + 0.5178571428571429, 0.6964285714285714, + 0.5535714285714286, 0.6964285714285714, + 0.5535714285714286, 0.6964285714285714, + 0.5892857142857143, 0.6964285714285714, + 0.5892857142857143, 0.6964285714285714, + 0.625, 0.6964285714285714, + 0.625, 0.6964285714285714, + 0.6607142857142857, 0.6964285714285714, + 0.6607142857142857, 0.6964285714285714, + 0.6964285714285714, 0.6964285714285714, + 0.6964285714285714, 0.6964285714285714, + 0.7321428571428571, 0.6964285714285714, + 0.7321428571428571, 0.6964285714285714, + 0.7678571428571429, 0.6964285714285714, + 0.7678571428571429, 0.6964285714285714, + 0.8035714285714286, 0.6964285714285714, + 0.8035714285714286, 0.6964285714285714, + 0.8392857142857143, 0.6964285714285714, + 0.8392857142857143, 0.6964285714285714, + 0.875, 0.6964285714285714, + 0.875, 0.6964285714285714, + 0.9107142857142857, 0.6964285714285714, + 0.9107142857142857, 0.6964285714285714, + 0.9464285714285714, 0.6964285714285714, + 0.9464285714285714, 0.6964285714285714, + 0.9821428571428571, 0.6964285714285714, + 0.9821428571428571, 0.6964285714285714, + 0.017857142857142856, 0.7321428571428571, + 0.017857142857142856, 0.7321428571428571, + 0.05357142857142857, 0.7321428571428571, + 0.05357142857142857, 0.7321428571428571, + 0.08928571428571429, 0.7321428571428571, + 0.08928571428571429, 0.7321428571428571, + 0.125, 0.7321428571428571, + 0.125, 0.7321428571428571, + 0.16071428571428573, 0.7321428571428571, + 0.16071428571428573, 0.7321428571428571, + 0.19642857142857142, 0.7321428571428571, + 0.19642857142857142, 0.7321428571428571, + 0.23214285714285715, 0.7321428571428571, + 0.23214285714285715, 0.7321428571428571, + 0.26785714285714285, 0.7321428571428571, + 0.26785714285714285, 0.7321428571428571, + 0.30357142857142855, 0.7321428571428571, + 0.30357142857142855, 0.7321428571428571, + 0.3392857142857143, 0.7321428571428571, + 0.3392857142857143, 0.7321428571428571, + 0.375, 0.7321428571428571, + 0.375, 0.7321428571428571, + 0.4107142857142857, 0.7321428571428571, + 0.4107142857142857, 0.7321428571428571, + 0.44642857142857145, 0.7321428571428571, + 0.44642857142857145, 0.7321428571428571, + 0.48214285714285715, 0.7321428571428571, + 0.48214285714285715, 0.7321428571428571, + 0.5178571428571429, 0.7321428571428571, + 0.5178571428571429, 0.7321428571428571, + 0.5535714285714286, 0.7321428571428571, + 0.5535714285714286, 0.7321428571428571, + 0.5892857142857143, 0.7321428571428571, + 0.5892857142857143, 0.7321428571428571, + 0.625, 0.7321428571428571, + 0.625, 0.7321428571428571, + 0.6607142857142857, 0.7321428571428571, + 0.6607142857142857, 0.7321428571428571, + 0.6964285714285714, 0.7321428571428571, + 0.6964285714285714, 0.7321428571428571, + 0.7321428571428571, 0.7321428571428571, + 0.7321428571428571, 0.7321428571428571, + 0.7678571428571429, 0.7321428571428571, + 0.7678571428571429, 0.7321428571428571, + 0.8035714285714286, 0.7321428571428571, + 0.8035714285714286, 0.7321428571428571, + 0.8392857142857143, 0.7321428571428571, + 0.8392857142857143, 0.7321428571428571, + 0.875, 0.7321428571428571, + 0.875, 0.7321428571428571, + 0.9107142857142857, 0.7321428571428571, + 0.9107142857142857, 0.7321428571428571, + 0.9464285714285714, 0.7321428571428571, + 0.9464285714285714, 0.7321428571428571, + 0.9821428571428571, 0.7321428571428571, + 0.9821428571428571, 0.7321428571428571, + 0.017857142857142856, 0.7678571428571429, + 0.017857142857142856, 0.7678571428571429, + 0.05357142857142857, 0.7678571428571429, + 0.05357142857142857, 0.7678571428571429, + 0.08928571428571429, 0.7678571428571429, + 0.08928571428571429, 0.7678571428571429, + 0.125, 0.7678571428571429, + 0.125, 0.7678571428571429, + 0.16071428571428573, 0.7678571428571429, + 0.16071428571428573, 0.7678571428571429, + 0.19642857142857142, 0.7678571428571429, + 0.19642857142857142, 0.7678571428571429, + 0.23214285714285715, 0.7678571428571429, + 0.23214285714285715, 0.7678571428571429, + 0.26785714285714285, 0.7678571428571429, + 0.26785714285714285, 0.7678571428571429, + 0.30357142857142855, 0.7678571428571429, + 0.30357142857142855, 0.7678571428571429, + 0.3392857142857143, 0.7678571428571429, + 0.3392857142857143, 0.7678571428571429, + 0.375, 0.7678571428571429, + 0.375, 0.7678571428571429, + 0.4107142857142857, 0.7678571428571429, + 0.4107142857142857, 0.7678571428571429, + 0.44642857142857145, 0.7678571428571429, + 0.44642857142857145, 0.7678571428571429, + 0.48214285714285715, 0.7678571428571429, + 0.48214285714285715, 0.7678571428571429, + 0.5178571428571429, 0.7678571428571429, + 0.5178571428571429, 0.7678571428571429, + 0.5535714285714286, 0.7678571428571429, + 0.5535714285714286, 0.7678571428571429, + 0.5892857142857143, 0.7678571428571429, + 0.5892857142857143, 0.7678571428571429, + 0.625, 0.7678571428571429, + 0.625, 0.7678571428571429, + 0.6607142857142857, 0.7678571428571429, + 0.6607142857142857, 0.7678571428571429, + 0.6964285714285714, 0.7678571428571429, + 0.6964285714285714, 0.7678571428571429, + 0.7321428571428571, 0.7678571428571429, + 0.7321428571428571, 0.7678571428571429, + 0.7678571428571429, 0.7678571428571429, + 0.7678571428571429, 0.7678571428571429, + 0.8035714285714286, 0.7678571428571429, + 0.8035714285714286, 0.7678571428571429, + 0.8392857142857143, 0.7678571428571429, + 0.8392857142857143, 0.7678571428571429, + 0.875, 0.7678571428571429, + 0.875, 0.7678571428571429, + 0.9107142857142857, 0.7678571428571429, + 0.9107142857142857, 0.7678571428571429, + 0.9464285714285714, 0.7678571428571429, + 0.9464285714285714, 0.7678571428571429, + 0.9821428571428571, 0.7678571428571429, + 0.9821428571428571, 0.7678571428571429, + 0.017857142857142856, 0.8035714285714286, + 0.017857142857142856, 0.8035714285714286, + 0.05357142857142857, 0.8035714285714286, + 0.05357142857142857, 0.8035714285714286, + 0.08928571428571429, 0.8035714285714286, + 0.08928571428571429, 0.8035714285714286, + 0.125, 0.8035714285714286, + 0.125, 0.8035714285714286, + 0.16071428571428573, 0.8035714285714286, + 0.16071428571428573, 0.8035714285714286, + 0.19642857142857142, 0.8035714285714286, + 0.19642857142857142, 0.8035714285714286, + 0.23214285714285715, 0.8035714285714286, + 0.23214285714285715, 0.8035714285714286, + 0.26785714285714285, 0.8035714285714286, + 0.26785714285714285, 0.8035714285714286, + 0.30357142857142855, 0.8035714285714286, + 0.30357142857142855, 0.8035714285714286, + 0.3392857142857143, 0.8035714285714286, + 0.3392857142857143, 0.8035714285714286, + 0.375, 0.8035714285714286, + 0.375, 0.8035714285714286, + 0.4107142857142857, 0.8035714285714286, + 0.4107142857142857, 0.8035714285714286, + 0.44642857142857145, 0.8035714285714286, + 0.44642857142857145, 0.8035714285714286, + 0.48214285714285715, 0.8035714285714286, + 0.48214285714285715, 0.8035714285714286, + 0.5178571428571429, 0.8035714285714286, + 0.5178571428571429, 0.8035714285714286, + 0.5535714285714286, 0.8035714285714286, + 0.5535714285714286, 0.8035714285714286, + 0.5892857142857143, 0.8035714285714286, + 0.5892857142857143, 0.8035714285714286, + 0.625, 0.8035714285714286, + 0.625, 0.8035714285714286, + 0.6607142857142857, 0.8035714285714286, + 0.6607142857142857, 0.8035714285714286, + 0.6964285714285714, 0.8035714285714286, + 0.6964285714285714, 0.8035714285714286, + 0.7321428571428571, 0.8035714285714286, + 0.7321428571428571, 0.8035714285714286, + 0.7678571428571429, 0.8035714285714286, + 0.7678571428571429, 0.8035714285714286, + 0.8035714285714286, 0.8035714285714286, + 0.8035714285714286, 0.8035714285714286, + 0.8392857142857143, 0.8035714285714286, + 0.8392857142857143, 0.8035714285714286, + 0.875, 0.8035714285714286, + 0.875, 0.8035714285714286, + 0.9107142857142857, 0.8035714285714286, + 0.9107142857142857, 0.8035714285714286, + 0.9464285714285714, 0.8035714285714286, + 0.9464285714285714, 0.8035714285714286, + 0.9821428571428571, 0.8035714285714286, + 0.9821428571428571, 0.8035714285714286, + 0.017857142857142856, 0.8392857142857143, + 0.017857142857142856, 0.8392857142857143, + 0.05357142857142857, 0.8392857142857143, + 0.05357142857142857, 0.8392857142857143, + 0.08928571428571429, 0.8392857142857143, + 0.08928571428571429, 0.8392857142857143, + 0.125, 0.8392857142857143, + 0.125, 0.8392857142857143, + 0.16071428571428573, 0.8392857142857143, + 0.16071428571428573, 0.8392857142857143, + 0.19642857142857142, 0.8392857142857143, + 0.19642857142857142, 0.8392857142857143, + 0.23214285714285715, 0.8392857142857143, + 0.23214285714285715, 0.8392857142857143, + 0.26785714285714285, 0.8392857142857143, + 0.26785714285714285, 0.8392857142857143, + 0.30357142857142855, 0.8392857142857143, + 0.30357142857142855, 0.8392857142857143, + 0.3392857142857143, 0.8392857142857143, + 0.3392857142857143, 0.8392857142857143, + 0.375, 0.8392857142857143, + 0.375, 0.8392857142857143, + 0.4107142857142857, 0.8392857142857143, + 0.4107142857142857, 0.8392857142857143, + 0.44642857142857145, 0.8392857142857143, + 0.44642857142857145, 0.8392857142857143, + 0.48214285714285715, 0.8392857142857143, + 0.48214285714285715, 0.8392857142857143, + 0.5178571428571429, 0.8392857142857143, + 0.5178571428571429, 0.8392857142857143, + 0.5535714285714286, 0.8392857142857143, + 0.5535714285714286, 0.8392857142857143, + 0.5892857142857143, 0.8392857142857143, + 0.5892857142857143, 0.8392857142857143, + 0.625, 0.8392857142857143, + 0.625, 0.8392857142857143, + 0.6607142857142857, 0.8392857142857143, + 0.6607142857142857, 0.8392857142857143, + 0.6964285714285714, 0.8392857142857143, + 0.6964285714285714, 0.8392857142857143, + 0.7321428571428571, 0.8392857142857143, + 0.7321428571428571, 0.8392857142857143, + 0.7678571428571429, 0.8392857142857143, + 0.7678571428571429, 0.8392857142857143, + 0.8035714285714286, 0.8392857142857143, + 0.8035714285714286, 0.8392857142857143, + 0.8392857142857143, 0.8392857142857143, + 0.8392857142857143, 0.8392857142857143, + 0.875, 0.8392857142857143, + 0.875, 0.8392857142857143, + 0.9107142857142857, 0.8392857142857143, + 0.9107142857142857, 0.8392857142857143, + 0.9464285714285714, 0.8392857142857143, + 0.9464285714285714, 0.8392857142857143, + 0.9821428571428571, 0.8392857142857143, + 0.9821428571428571, 0.8392857142857143, + 0.017857142857142856, 0.875, + 0.017857142857142856, 0.875, + 0.05357142857142857, 0.875, + 0.05357142857142857, 0.875, + 0.08928571428571429, 0.875, + 0.08928571428571429, 0.875, + 0.125, 0.875, + 0.125, 0.875, + 0.16071428571428573, 0.875, + 0.16071428571428573, 0.875, + 0.19642857142857142, 0.875, + 0.19642857142857142, 0.875, + 0.23214285714285715, 0.875, + 0.23214285714285715, 0.875, + 0.26785714285714285, 0.875, + 0.26785714285714285, 0.875, + 0.30357142857142855, 0.875, + 0.30357142857142855, 0.875, + 0.3392857142857143, 0.875, + 0.3392857142857143, 0.875, + 0.375, 0.875, + 0.375, 0.875, + 0.4107142857142857, 0.875, + 0.4107142857142857, 0.875, + 0.44642857142857145, 0.875, + 0.44642857142857145, 0.875, + 0.48214285714285715, 0.875, + 0.48214285714285715, 0.875, + 0.5178571428571429, 0.875, + 0.5178571428571429, 0.875, + 0.5535714285714286, 0.875, + 0.5535714285714286, 0.875, + 0.5892857142857143, 0.875, + 0.5892857142857143, 0.875, + 0.625, 0.875, + 0.625, 0.875, + 0.6607142857142857, 0.875, + 0.6607142857142857, 0.875, + 0.6964285714285714, 0.875, + 0.6964285714285714, 0.875, + 0.7321428571428571, 0.875, + 0.7321428571428571, 0.875, + 0.7678571428571429, 0.875, + 0.7678571428571429, 0.875, + 0.8035714285714286, 0.875, + 0.8035714285714286, 0.875, + 0.8392857142857143, 0.875, + 0.8392857142857143, 0.875, + 0.875, 0.875, + 0.875, 0.875, + 0.9107142857142857, 0.875, + 0.9107142857142857, 0.875, + 0.9464285714285714, 0.875, + 0.9464285714285714, 0.875, + 0.9821428571428571, 0.875, + 0.9821428571428571, 0.875, + 0.017857142857142856, 0.9107142857142857, + 0.017857142857142856, 0.9107142857142857, + 0.05357142857142857, 0.9107142857142857, + 0.05357142857142857, 0.9107142857142857, + 0.08928571428571429, 0.9107142857142857, + 0.08928571428571429, 0.9107142857142857, + 0.125, 0.9107142857142857, + 0.125, 0.9107142857142857, + 0.16071428571428573, 0.9107142857142857, + 0.16071428571428573, 0.9107142857142857, + 0.19642857142857142, 0.9107142857142857, + 0.19642857142857142, 0.9107142857142857, + 0.23214285714285715, 0.9107142857142857, + 0.23214285714285715, 0.9107142857142857, + 0.26785714285714285, 0.9107142857142857, + 0.26785714285714285, 0.9107142857142857, + 0.30357142857142855, 0.9107142857142857, + 0.30357142857142855, 0.9107142857142857, + 0.3392857142857143, 0.9107142857142857, + 0.3392857142857143, 0.9107142857142857, + 0.375, 0.9107142857142857, + 0.375, 0.9107142857142857, + 0.4107142857142857, 0.9107142857142857, + 0.4107142857142857, 0.9107142857142857, + 0.44642857142857145, 0.9107142857142857, + 0.44642857142857145, 0.9107142857142857, + 0.48214285714285715, 0.9107142857142857, + 0.48214285714285715, 0.9107142857142857, + 0.5178571428571429, 0.9107142857142857, + 0.5178571428571429, 0.9107142857142857, + 0.5535714285714286, 0.9107142857142857, + 0.5535714285714286, 0.9107142857142857, + 0.5892857142857143, 0.9107142857142857, + 0.5892857142857143, 0.9107142857142857, + 0.625, 0.9107142857142857, + 0.625, 0.9107142857142857, + 0.6607142857142857, 0.9107142857142857, + 0.6607142857142857, 0.9107142857142857, + 0.6964285714285714, 0.9107142857142857, + 0.6964285714285714, 0.9107142857142857, + 0.7321428571428571, 0.9107142857142857, + 0.7321428571428571, 0.9107142857142857, + 0.7678571428571429, 0.9107142857142857, + 0.7678571428571429, 0.9107142857142857, + 0.8035714285714286, 0.9107142857142857, + 0.8035714285714286, 0.9107142857142857, + 0.8392857142857143, 0.9107142857142857, + 0.8392857142857143, 0.9107142857142857, + 0.875, 0.9107142857142857, + 0.875, 0.9107142857142857, + 0.9107142857142857, 0.9107142857142857, + 0.9107142857142857, 0.9107142857142857, + 0.9464285714285714, 0.9107142857142857, + 0.9464285714285714, 0.9107142857142857, + 0.9821428571428571, 0.9107142857142857, + 0.9821428571428571, 0.9107142857142857, + 0.017857142857142856, 0.9464285714285714, + 0.017857142857142856, 0.9464285714285714, + 0.05357142857142857, 0.9464285714285714, + 0.05357142857142857, 0.9464285714285714, + 0.08928571428571429, 0.9464285714285714, + 0.08928571428571429, 0.9464285714285714, + 0.125, 0.9464285714285714, + 0.125, 0.9464285714285714, + 0.16071428571428573, 0.9464285714285714, + 0.16071428571428573, 0.9464285714285714, + 0.19642857142857142, 0.9464285714285714, + 0.19642857142857142, 0.9464285714285714, + 0.23214285714285715, 0.9464285714285714, + 0.23214285714285715, 0.9464285714285714, + 0.26785714285714285, 0.9464285714285714, + 0.26785714285714285, 0.9464285714285714, + 0.30357142857142855, 0.9464285714285714, + 0.30357142857142855, 0.9464285714285714, + 0.3392857142857143, 0.9464285714285714, + 0.3392857142857143, 0.9464285714285714, + 0.375, 0.9464285714285714, + 0.375, 0.9464285714285714, + 0.4107142857142857, 0.9464285714285714, + 0.4107142857142857, 0.9464285714285714, + 0.44642857142857145, 0.9464285714285714, + 0.44642857142857145, 0.9464285714285714, + 0.48214285714285715, 0.9464285714285714, + 0.48214285714285715, 0.9464285714285714, + 0.5178571428571429, 0.9464285714285714, + 0.5178571428571429, 0.9464285714285714, + 0.5535714285714286, 0.9464285714285714, + 0.5535714285714286, 0.9464285714285714, + 0.5892857142857143, 0.9464285714285714, + 0.5892857142857143, 0.9464285714285714, + 0.625, 0.9464285714285714, + 0.625, 0.9464285714285714, + 0.6607142857142857, 0.9464285714285714, + 0.6607142857142857, 0.9464285714285714, + 0.6964285714285714, 0.9464285714285714, + 0.6964285714285714, 0.9464285714285714, + 0.7321428571428571, 0.9464285714285714, + 0.7321428571428571, 0.9464285714285714, + 0.7678571428571429, 0.9464285714285714, + 0.7678571428571429, 0.9464285714285714, + 0.8035714285714286, 0.9464285714285714, + 0.8035714285714286, 0.9464285714285714, + 0.8392857142857143, 0.9464285714285714, + 0.8392857142857143, 0.9464285714285714, + 0.875, 0.9464285714285714, + 0.875, 0.9464285714285714, + 0.9107142857142857, 0.9464285714285714, + 0.9107142857142857, 0.9464285714285714, + 0.9464285714285714, 0.9464285714285714, + 0.9464285714285714, 0.9464285714285714, + 0.9821428571428571, 0.9464285714285714, + 0.9821428571428571, 0.9464285714285714, + 0.017857142857142856, 0.9821428571428571, + 0.017857142857142856, 0.9821428571428571, + 0.05357142857142857, 0.9821428571428571, + 0.05357142857142857, 0.9821428571428571, + 0.08928571428571429, 0.9821428571428571, + 0.08928571428571429, 0.9821428571428571, + 0.125, 0.9821428571428571, + 0.125, 0.9821428571428571, + 0.16071428571428573, 0.9821428571428571, + 0.16071428571428573, 0.9821428571428571, + 0.19642857142857142, 0.9821428571428571, + 0.19642857142857142, 0.9821428571428571, + 0.23214285714285715, 0.9821428571428571, + 0.23214285714285715, 0.9821428571428571, + 0.26785714285714285, 0.9821428571428571, + 0.26785714285714285, 0.9821428571428571, + 0.30357142857142855, 0.9821428571428571, + 0.30357142857142855, 0.9821428571428571, + 0.3392857142857143, 0.9821428571428571, + 0.3392857142857143, 0.9821428571428571, + 0.375, 0.9821428571428571, + 0.375, 0.9821428571428571, + 0.4107142857142857, 0.9821428571428571, + 0.4107142857142857, 0.9821428571428571, + 0.44642857142857145, 0.9821428571428571, + 0.44642857142857145, 0.9821428571428571, + 0.48214285714285715, 0.9821428571428571, + 0.48214285714285715, 0.9821428571428571, + 0.5178571428571429, 0.9821428571428571, + 0.5178571428571429, 0.9821428571428571, + 0.5535714285714286, 0.9821428571428571, + 0.5535714285714286, 0.9821428571428571, + 0.5892857142857143, 0.9821428571428571, + 0.5892857142857143, 0.9821428571428571, + 0.625, 0.9821428571428571, + 0.625, 0.9821428571428571, + 0.6607142857142857, 0.9821428571428571, + 0.6607142857142857, 0.9821428571428571, + 0.6964285714285714, 0.9821428571428571, + 0.6964285714285714, 0.9821428571428571, + 0.7321428571428571, 0.9821428571428571, + 0.7321428571428571, 0.9821428571428571, + 0.7678571428571429, 0.9821428571428571, + 0.7678571428571429, 0.9821428571428571, + 0.8035714285714286, 0.9821428571428571, + 0.8035714285714286, 0.9821428571428571, + 0.8392857142857143, 0.9821428571428571, + 0.8392857142857143, 0.9821428571428571, + 0.875, 0.9821428571428571, + 0.875, 0.9821428571428571, + 0.9107142857142857, 0.9821428571428571, + 0.9107142857142857, 0.9821428571428571, + 0.9464285714285714, 0.9821428571428571, + 0.9464285714285714, 0.9821428571428571, + 0.9821428571428571, 0.9821428571428571, + 0.9821428571428571, 0.9821428571428571, + 0.03571428571428571, 0.03571428571428571, + 0.03571428571428571, 0.03571428571428571, + 0.10714285714285714, 0.03571428571428571, + 0.10714285714285714, 0.03571428571428571, + 0.17857142857142858, 0.03571428571428571, + 0.17857142857142858, 0.03571428571428571, + 0.25, 0.03571428571428571, + 0.25, 0.03571428571428571, + 0.32142857142857145, 0.03571428571428571, + 0.32142857142857145, 0.03571428571428571, + 0.39285714285714285, 0.03571428571428571, + 0.39285714285714285, 0.03571428571428571, + 0.4642857142857143, 0.03571428571428571, + 0.4642857142857143, 0.03571428571428571, + 0.5357142857142857, 0.03571428571428571, + 0.5357142857142857, 0.03571428571428571, + 0.6071428571428571, 0.03571428571428571, + 0.6071428571428571, 0.03571428571428571, + 0.6785714285714286, 0.03571428571428571, + 0.6785714285714286, 0.03571428571428571, + 0.75, 0.03571428571428571, + 0.75, 0.03571428571428571, + 0.8214285714285714, 0.03571428571428571, + 0.8214285714285714, 0.03571428571428571, + 0.8928571428571429, 0.03571428571428571, + 0.8928571428571429, 0.03571428571428571, + 0.9642857142857143, 0.03571428571428571, + 0.9642857142857143, 0.03571428571428571, + 0.03571428571428571, 0.10714285714285714, + 0.03571428571428571, 0.10714285714285714, + 0.10714285714285714, 0.10714285714285714, + 0.10714285714285714, 0.10714285714285714, + 0.17857142857142858, 0.10714285714285714, + 0.17857142857142858, 0.10714285714285714, + 0.25, 0.10714285714285714, + 0.25, 0.10714285714285714, + 0.32142857142857145, 0.10714285714285714, + 0.32142857142857145, 0.10714285714285714, + 0.39285714285714285, 0.10714285714285714, + 0.39285714285714285, 0.10714285714285714, + 0.4642857142857143, 0.10714285714285714, + 0.4642857142857143, 0.10714285714285714, + 0.5357142857142857, 0.10714285714285714, + 0.5357142857142857, 0.10714285714285714, + 0.6071428571428571, 0.10714285714285714, + 0.6071428571428571, 0.10714285714285714, + 0.6785714285714286, 0.10714285714285714, + 0.6785714285714286, 0.10714285714285714, + 0.75, 0.10714285714285714, + 0.75, 0.10714285714285714, + 0.8214285714285714, 0.10714285714285714, + 0.8214285714285714, 0.10714285714285714, + 0.8928571428571429, 0.10714285714285714, + 0.8928571428571429, 0.10714285714285714, + 0.9642857142857143, 0.10714285714285714, + 0.9642857142857143, 0.10714285714285714, + 0.03571428571428571, 0.17857142857142858, + 0.03571428571428571, 0.17857142857142858, + 0.10714285714285714, 0.17857142857142858, + 0.10714285714285714, 0.17857142857142858, + 0.17857142857142858, 0.17857142857142858, + 0.17857142857142858, 0.17857142857142858, + 0.25, 0.17857142857142858, + 0.25, 0.17857142857142858, + 0.32142857142857145, 0.17857142857142858, + 0.32142857142857145, 0.17857142857142858, + 0.39285714285714285, 0.17857142857142858, + 0.39285714285714285, 0.17857142857142858, + 0.4642857142857143, 0.17857142857142858, + 0.4642857142857143, 0.17857142857142858, + 0.5357142857142857, 0.17857142857142858, + 0.5357142857142857, 0.17857142857142858, + 0.6071428571428571, 0.17857142857142858, + 0.6071428571428571, 0.17857142857142858, + 0.6785714285714286, 0.17857142857142858, + 0.6785714285714286, 0.17857142857142858, + 0.75, 0.17857142857142858, + 0.75, 0.17857142857142858, + 0.8214285714285714, 0.17857142857142858, + 0.8214285714285714, 0.17857142857142858, + 0.8928571428571429, 0.17857142857142858, + 0.8928571428571429, 0.17857142857142858, + 0.9642857142857143, 0.17857142857142858, + 0.9642857142857143, 0.17857142857142858, + 0.03571428571428571, 0.25, + 0.03571428571428571, 0.25, + 0.10714285714285714, 0.25, + 0.10714285714285714, 0.25, + 0.17857142857142858, 0.25, + 0.17857142857142858, 0.25, + 0.25, 0.25, + 0.25, 0.25, + 0.32142857142857145, 0.25, + 0.32142857142857145, 0.25, + 0.39285714285714285, 0.25, + 0.39285714285714285, 0.25, + 0.4642857142857143, 0.25, + 0.4642857142857143, 0.25, + 0.5357142857142857, 0.25, + 0.5357142857142857, 0.25, + 0.6071428571428571, 0.25, + 0.6071428571428571, 0.25, + 0.6785714285714286, 0.25, + 0.6785714285714286, 0.25, + 0.75, 0.25, + 0.75, 0.25, + 0.8214285714285714, 0.25, + 0.8214285714285714, 0.25, + 0.8928571428571429, 0.25, + 0.8928571428571429, 0.25, + 0.9642857142857143, 0.25, + 0.9642857142857143, 0.25, + 0.03571428571428571, 0.32142857142857145, + 0.03571428571428571, 0.32142857142857145, + 0.10714285714285714, 0.32142857142857145, + 0.10714285714285714, 0.32142857142857145, + 0.17857142857142858, 0.32142857142857145, + 0.17857142857142858, 0.32142857142857145, + 0.25, 0.32142857142857145, + 0.25, 0.32142857142857145, + 0.32142857142857145, 0.32142857142857145, + 0.32142857142857145, 0.32142857142857145, + 0.39285714285714285, 0.32142857142857145, + 0.39285714285714285, 0.32142857142857145, + 0.4642857142857143, 0.32142857142857145, + 0.4642857142857143, 0.32142857142857145, + 0.5357142857142857, 0.32142857142857145, + 0.5357142857142857, 0.32142857142857145, + 0.6071428571428571, 0.32142857142857145, + 0.6071428571428571, 0.32142857142857145, + 0.6785714285714286, 0.32142857142857145, + 0.6785714285714286, 0.32142857142857145, + 0.75, 0.32142857142857145, + 0.75, 0.32142857142857145, + 0.8214285714285714, 0.32142857142857145, + 0.8214285714285714, 0.32142857142857145, + 0.8928571428571429, 0.32142857142857145, + 0.8928571428571429, 0.32142857142857145, + 0.9642857142857143, 0.32142857142857145, + 0.9642857142857143, 0.32142857142857145, + 0.03571428571428571, 0.39285714285714285, + 0.03571428571428571, 0.39285714285714285, + 0.10714285714285714, 0.39285714285714285, + 0.10714285714285714, 0.39285714285714285, + 0.17857142857142858, 0.39285714285714285, + 0.17857142857142858, 0.39285714285714285, + 0.25, 0.39285714285714285, + 0.25, 0.39285714285714285, + 0.32142857142857145, 0.39285714285714285, + 0.32142857142857145, 0.39285714285714285, + 0.39285714285714285, 0.39285714285714285, + 0.39285714285714285, 0.39285714285714285, + 0.4642857142857143, 0.39285714285714285, + 0.4642857142857143, 0.39285714285714285, + 0.5357142857142857, 0.39285714285714285, + 0.5357142857142857, 0.39285714285714285, + 0.6071428571428571, 0.39285714285714285, + 0.6071428571428571, 0.39285714285714285, + 0.6785714285714286, 0.39285714285714285, + 0.6785714285714286, 0.39285714285714285, + 0.75, 0.39285714285714285, + 0.75, 0.39285714285714285, + 0.8214285714285714, 0.39285714285714285, + 0.8214285714285714, 0.39285714285714285, + 0.8928571428571429, 0.39285714285714285, + 0.8928571428571429, 0.39285714285714285, + 0.9642857142857143, 0.39285714285714285, + 0.9642857142857143, 0.39285714285714285, + 0.03571428571428571, 0.4642857142857143, + 0.03571428571428571, 0.4642857142857143, + 0.10714285714285714, 0.4642857142857143, + 0.10714285714285714, 0.4642857142857143, + 0.17857142857142858, 0.4642857142857143, + 0.17857142857142858, 0.4642857142857143, + 0.25, 0.4642857142857143, + 0.25, 0.4642857142857143, + 0.32142857142857145, 0.4642857142857143, + 0.32142857142857145, 0.4642857142857143, + 0.39285714285714285, 0.4642857142857143, + 0.39285714285714285, 0.4642857142857143, + 0.4642857142857143, 0.4642857142857143, + 0.4642857142857143, 0.4642857142857143, + 0.5357142857142857, 0.4642857142857143, + 0.5357142857142857, 0.4642857142857143, + 0.6071428571428571, 0.4642857142857143, + 0.6071428571428571, 0.4642857142857143, + 0.6785714285714286, 0.4642857142857143, + 0.6785714285714286, 0.4642857142857143, + 0.75, 0.4642857142857143, + 0.75, 0.4642857142857143, + 0.8214285714285714, 0.4642857142857143, + 0.8214285714285714, 0.4642857142857143, + 0.8928571428571429, 0.4642857142857143, + 0.8928571428571429, 0.4642857142857143, + 0.9642857142857143, 0.4642857142857143, + 0.9642857142857143, 0.4642857142857143, + 0.03571428571428571, 0.5357142857142857, + 0.03571428571428571, 0.5357142857142857, + 0.10714285714285714, 0.5357142857142857, + 0.10714285714285714, 0.5357142857142857, + 0.17857142857142858, 0.5357142857142857, + 0.17857142857142858, 0.5357142857142857, + 0.25, 0.5357142857142857, + 0.25, 0.5357142857142857, + 0.32142857142857145, 0.5357142857142857, + 0.32142857142857145, 0.5357142857142857, + 0.39285714285714285, 0.5357142857142857, + 0.39285714285714285, 0.5357142857142857, + 0.4642857142857143, 0.5357142857142857, + 0.4642857142857143, 0.5357142857142857, + 0.5357142857142857, 0.5357142857142857, + 0.5357142857142857, 0.5357142857142857, + 0.6071428571428571, 0.5357142857142857, + 0.6071428571428571, 0.5357142857142857, + 0.6785714285714286, 0.5357142857142857, + 0.6785714285714286, 0.5357142857142857, + 0.75, 0.5357142857142857, + 0.75, 0.5357142857142857, + 0.8214285714285714, 0.5357142857142857, + 0.8214285714285714, 0.5357142857142857, + 0.8928571428571429, 0.5357142857142857, + 0.8928571428571429, 0.5357142857142857, + 0.9642857142857143, 0.5357142857142857, + 0.9642857142857143, 0.5357142857142857, + 0.03571428571428571, 0.6071428571428571, + 0.03571428571428571, 0.6071428571428571, + 0.10714285714285714, 0.6071428571428571, + 0.10714285714285714, 0.6071428571428571, + 0.17857142857142858, 0.6071428571428571, + 0.17857142857142858, 0.6071428571428571, + 0.25, 0.6071428571428571, + 0.25, 0.6071428571428571, + 0.32142857142857145, 0.6071428571428571, + 0.32142857142857145, 0.6071428571428571, + 0.39285714285714285, 0.6071428571428571, + 0.39285714285714285, 0.6071428571428571, + 0.4642857142857143, 0.6071428571428571, + 0.4642857142857143, 0.6071428571428571, + 0.5357142857142857, 0.6071428571428571, + 0.5357142857142857, 0.6071428571428571, + 0.6071428571428571, 0.6071428571428571, + 0.6071428571428571, 0.6071428571428571, + 0.6785714285714286, 0.6071428571428571, + 0.6785714285714286, 0.6071428571428571, + 0.75, 0.6071428571428571, + 0.75, 0.6071428571428571, + 0.8214285714285714, 0.6071428571428571, + 0.8214285714285714, 0.6071428571428571, + 0.8928571428571429, 0.6071428571428571, + 0.8928571428571429, 0.6071428571428571, + 0.9642857142857143, 0.6071428571428571, + 0.9642857142857143, 0.6071428571428571, + 0.03571428571428571, 0.6785714285714286, + 0.03571428571428571, 0.6785714285714286, + 0.10714285714285714, 0.6785714285714286, + 0.10714285714285714, 0.6785714285714286, + 0.17857142857142858, 0.6785714285714286, + 0.17857142857142858, 0.6785714285714286, + 0.25, 0.6785714285714286, + 0.25, 0.6785714285714286, + 0.32142857142857145, 0.6785714285714286, + 0.32142857142857145, 0.6785714285714286, + 0.39285714285714285, 0.6785714285714286, + 0.39285714285714285, 0.6785714285714286, + 0.4642857142857143, 0.6785714285714286, + 0.4642857142857143, 0.6785714285714286, + 0.5357142857142857, 0.6785714285714286, + 0.5357142857142857, 0.6785714285714286, + 0.6071428571428571, 0.6785714285714286, + 0.6071428571428571, 0.6785714285714286, + 0.6785714285714286, 0.6785714285714286, + 0.6785714285714286, 0.6785714285714286, + 0.75, 0.6785714285714286, + 0.75, 0.6785714285714286, + 0.8214285714285714, 0.6785714285714286, + 0.8214285714285714, 0.6785714285714286, + 0.8928571428571429, 0.6785714285714286, + 0.8928571428571429, 0.6785714285714286, + 0.9642857142857143, 0.6785714285714286, + 0.9642857142857143, 0.6785714285714286, + 0.03571428571428571, 0.75, + 0.03571428571428571, 0.75, + 0.10714285714285714, 0.75, + 0.10714285714285714, 0.75, + 0.17857142857142858, 0.75, + 0.17857142857142858, 0.75, + 0.25, 0.75, + 0.25, 0.75, + 0.32142857142857145, 0.75, + 0.32142857142857145, 0.75, + 0.39285714285714285, 0.75, + 0.39285714285714285, 0.75, + 0.4642857142857143, 0.75, + 0.4642857142857143, 0.75, + 0.5357142857142857, 0.75, + 0.5357142857142857, 0.75, + 0.6071428571428571, 0.75, + 0.6071428571428571, 0.75, + 0.6785714285714286, 0.75, + 0.6785714285714286, 0.75, + 0.75, 0.75, + 0.75, 0.75, + 0.8214285714285714, 0.75, + 0.8214285714285714, 0.75, + 0.8928571428571429, 0.75, + 0.8928571428571429, 0.75, + 0.9642857142857143, 0.75, + 0.9642857142857143, 0.75, + 0.03571428571428571, 0.8214285714285714, + 0.03571428571428571, 0.8214285714285714, + 0.10714285714285714, 0.8214285714285714, + 0.10714285714285714, 0.8214285714285714, + 0.17857142857142858, 0.8214285714285714, + 0.17857142857142858, 0.8214285714285714, + 0.25, 0.8214285714285714, + 0.25, 0.8214285714285714, + 0.32142857142857145, 0.8214285714285714, + 0.32142857142857145, 0.8214285714285714, + 0.39285714285714285, 0.8214285714285714, + 0.39285714285714285, 0.8214285714285714, + 0.4642857142857143, 0.8214285714285714, + 0.4642857142857143, 0.8214285714285714, + 0.5357142857142857, 0.8214285714285714, + 0.5357142857142857, 0.8214285714285714, + 0.6071428571428571, 0.8214285714285714, + 0.6071428571428571, 0.8214285714285714, + 0.6785714285714286, 0.8214285714285714, + 0.6785714285714286, 0.8214285714285714, + 0.75, 0.8214285714285714, + 0.75, 0.8214285714285714, + 0.8214285714285714, 0.8214285714285714, + 0.8214285714285714, 0.8214285714285714, + 0.8928571428571429, 0.8214285714285714, + 0.8928571428571429, 0.8214285714285714, + 0.9642857142857143, 0.8214285714285714, + 0.9642857142857143, 0.8214285714285714, + 0.03571428571428571, 0.8928571428571429, + 0.03571428571428571, 0.8928571428571429, + 0.10714285714285714, 0.8928571428571429, + 0.10714285714285714, 0.8928571428571429, + 0.17857142857142858, 0.8928571428571429, + 0.17857142857142858, 0.8928571428571429, + 0.25, 0.8928571428571429, + 0.25, 0.8928571428571429, + 0.32142857142857145, 0.8928571428571429, + 0.32142857142857145, 0.8928571428571429, + 0.39285714285714285, 0.8928571428571429, + 0.39285714285714285, 0.8928571428571429, + 0.4642857142857143, 0.8928571428571429, + 0.4642857142857143, 0.8928571428571429, + 0.5357142857142857, 0.8928571428571429, + 0.5357142857142857, 0.8928571428571429, + 0.6071428571428571, 0.8928571428571429, + 0.6071428571428571, 0.8928571428571429, + 0.6785714285714286, 0.8928571428571429, + 0.6785714285714286, 0.8928571428571429, + 0.75, 0.8928571428571429, + 0.75, 0.8928571428571429, + 0.8214285714285714, 0.8928571428571429, + 0.8214285714285714, 0.8928571428571429, + 0.8928571428571429, 0.8928571428571429, + 0.8928571428571429, 0.8928571428571429, + 0.9642857142857143, 0.8928571428571429, + 0.9642857142857143, 0.8928571428571429, + 0.03571428571428571, 0.9642857142857143, + 0.03571428571428571, 0.9642857142857143, + 0.10714285714285714, 0.9642857142857143, + 0.10714285714285714, 0.9642857142857143, + 0.17857142857142858, 0.9642857142857143, + 0.17857142857142858, 0.9642857142857143, + 0.25, 0.9642857142857143, + 0.25, 0.9642857142857143, + 0.32142857142857145, 0.9642857142857143, + 0.32142857142857145, 0.9642857142857143, + 0.39285714285714285, 0.9642857142857143, + 0.39285714285714285, 0.9642857142857143, + 0.4642857142857143, 0.9642857142857143, + 0.4642857142857143, 0.9642857142857143, + 0.5357142857142857, 0.9642857142857143, + 0.5357142857142857, 0.9642857142857143, + 0.6071428571428571, 0.9642857142857143, + 0.6071428571428571, 0.9642857142857143, + 0.6785714285714286, 0.9642857142857143, + 0.6785714285714286, 0.9642857142857143, + 0.75, 0.9642857142857143, + 0.75, 0.9642857142857143, + 0.8214285714285714, 0.9642857142857143, + 0.8214285714285714, 0.9642857142857143, + 0.8928571428571429, 0.9642857142857143, + 0.8928571428571429, 0.9642857142857143, + 0.9642857142857143, 0.9642857142857143, + 0.9642857142857143, 0.9642857142857143, + 0.07142857142857142, 0.07142857142857142, + 0.07142857142857142, 0.07142857142857142, + 0.07142857142857142, 0.07142857142857142, + 0.07142857142857142, 0.07142857142857142, + 0.07142857142857142, 0.07142857142857142, + 0.07142857142857142, 0.07142857142857142, + 0.21428571428571427, 0.07142857142857142, + 0.21428571428571427, 0.07142857142857142, + 0.21428571428571427, 0.07142857142857142, + 0.21428571428571427, 0.07142857142857142, + 0.21428571428571427, 0.07142857142857142, + 0.21428571428571427, 0.07142857142857142, + 0.35714285714285715, 0.07142857142857142, + 0.35714285714285715, 0.07142857142857142, + 0.35714285714285715, 0.07142857142857142, + 0.35714285714285715, 0.07142857142857142, + 0.35714285714285715, 0.07142857142857142, + 0.35714285714285715, 0.07142857142857142, + 0.5, 0.07142857142857142, + 0.5, 0.07142857142857142, + 0.5, 0.07142857142857142, + 0.5, 0.07142857142857142, + 0.5, 0.07142857142857142, + 0.5, 0.07142857142857142, + 0.6428571428571429, 0.07142857142857142, + 0.6428571428571429, 0.07142857142857142, + 0.6428571428571429, 0.07142857142857142, + 0.6428571428571429, 0.07142857142857142, + 0.6428571428571429, 0.07142857142857142, + 0.6428571428571429, 0.07142857142857142, + 0.7857142857142857, 0.07142857142857142, + 0.7857142857142857, 0.07142857142857142, + 0.7857142857142857, 0.07142857142857142, + 0.7857142857142857, 0.07142857142857142, + 0.7857142857142857, 0.07142857142857142, + 0.7857142857142857, 0.07142857142857142, + 0.9285714285714286, 0.07142857142857142, + 0.9285714285714286, 0.07142857142857142, + 0.9285714285714286, 0.07142857142857142, + 0.9285714285714286, 0.07142857142857142, + 0.9285714285714286, 0.07142857142857142, + 0.9285714285714286, 0.07142857142857142, + 0.07142857142857142, 0.21428571428571427, + 0.07142857142857142, 0.21428571428571427, + 0.07142857142857142, 0.21428571428571427, + 0.07142857142857142, 0.21428571428571427, + 0.07142857142857142, 0.21428571428571427, + 0.07142857142857142, 0.21428571428571427, + 0.21428571428571427, 0.21428571428571427, + 0.21428571428571427, 0.21428571428571427, + 0.21428571428571427, 0.21428571428571427, + 0.21428571428571427, 0.21428571428571427, + 0.21428571428571427, 0.21428571428571427, + 0.21428571428571427, 0.21428571428571427, + 0.35714285714285715, 0.21428571428571427, + 0.35714285714285715, 0.21428571428571427, + 0.35714285714285715, 0.21428571428571427, + 0.35714285714285715, 0.21428571428571427, + 0.35714285714285715, 0.21428571428571427, + 0.35714285714285715, 0.21428571428571427, + 0.5, 0.21428571428571427, + 0.5, 0.21428571428571427, + 0.5, 0.21428571428571427, + 0.5, 0.21428571428571427, + 0.5, 0.21428571428571427, + 0.5, 0.21428571428571427, + 0.6428571428571429, 0.21428571428571427, + 0.6428571428571429, 0.21428571428571427, + 0.6428571428571429, 0.21428571428571427, + 0.6428571428571429, 0.21428571428571427, + 0.6428571428571429, 0.21428571428571427, + 0.6428571428571429, 0.21428571428571427, + 0.7857142857142857, 0.21428571428571427, + 0.7857142857142857, 0.21428571428571427, + 0.7857142857142857, 0.21428571428571427, + 0.7857142857142857, 0.21428571428571427, + 0.7857142857142857, 0.21428571428571427, + 0.7857142857142857, 0.21428571428571427, + 0.9285714285714286, 0.21428571428571427, + 0.9285714285714286, 0.21428571428571427, + 0.9285714285714286, 0.21428571428571427, + 0.9285714285714286, 0.21428571428571427, + 0.9285714285714286, 0.21428571428571427, + 0.9285714285714286, 0.21428571428571427, + 0.07142857142857142, 0.35714285714285715, + 0.07142857142857142, 0.35714285714285715, + 0.07142857142857142, 0.35714285714285715, + 0.07142857142857142, 0.35714285714285715, + 0.07142857142857142, 0.35714285714285715, + 0.07142857142857142, 0.35714285714285715, + 0.21428571428571427, 0.35714285714285715, + 0.21428571428571427, 0.35714285714285715, + 0.21428571428571427, 0.35714285714285715, + 0.21428571428571427, 0.35714285714285715, + 0.21428571428571427, 0.35714285714285715, + 0.21428571428571427, 0.35714285714285715, + 0.35714285714285715, 0.35714285714285715, + 0.35714285714285715, 0.35714285714285715, + 0.35714285714285715, 0.35714285714285715, + 0.35714285714285715, 0.35714285714285715, + 0.35714285714285715, 0.35714285714285715, + 0.35714285714285715, 0.35714285714285715, + 0.5, 0.35714285714285715, + 0.5, 0.35714285714285715, + 0.5, 0.35714285714285715, + 0.5, 0.35714285714285715, + 0.5, 0.35714285714285715, + 0.5, 0.35714285714285715, + 0.6428571428571429, 0.35714285714285715, + 0.6428571428571429, 0.35714285714285715, + 0.6428571428571429, 0.35714285714285715, + 0.6428571428571429, 0.35714285714285715, + 0.6428571428571429, 0.35714285714285715, + 0.6428571428571429, 0.35714285714285715, + 0.7857142857142857, 0.35714285714285715, + 0.7857142857142857, 0.35714285714285715, + 0.7857142857142857, 0.35714285714285715, + 0.7857142857142857, 0.35714285714285715, + 0.7857142857142857, 0.35714285714285715, + 0.7857142857142857, 0.35714285714285715, + 0.9285714285714286, 0.35714285714285715, + 0.9285714285714286, 0.35714285714285715, + 0.9285714285714286, 0.35714285714285715, + 0.9285714285714286, 0.35714285714285715, + 0.9285714285714286, 0.35714285714285715, + 0.9285714285714286, 0.35714285714285715, + 0.07142857142857142, 0.5, + 0.07142857142857142, 0.5, + 0.07142857142857142, 0.5, + 0.07142857142857142, 0.5, + 0.07142857142857142, 0.5, + 0.07142857142857142, 0.5, + 0.21428571428571427, 0.5, + 0.21428571428571427, 0.5, + 0.21428571428571427, 0.5, + 0.21428571428571427, 0.5, + 0.21428571428571427, 0.5, + 0.21428571428571427, 0.5, + 0.35714285714285715, 0.5, + 0.35714285714285715, 0.5, + 0.35714285714285715, 0.5, + 0.35714285714285715, 0.5, + 0.35714285714285715, 0.5, + 0.35714285714285715, 0.5, + 0.5, 0.5, + 0.5, 0.5, + 0.5, 0.5, + 0.5, 0.5, + 0.5, 0.5, + 0.5, 0.5, + 0.6428571428571429, 0.5, + 0.6428571428571429, 0.5, + 0.6428571428571429, 0.5, + 0.6428571428571429, 0.5, + 0.6428571428571429, 0.5, + 0.6428571428571429, 0.5, + 0.7857142857142857, 0.5, + 0.7857142857142857, 0.5, + 0.7857142857142857, 0.5, + 0.7857142857142857, 0.5, + 0.7857142857142857, 0.5, + 0.7857142857142857, 0.5, + 0.9285714285714286, 0.5, + 0.9285714285714286, 0.5, + 0.9285714285714286, 0.5, + 0.9285714285714286, 0.5, + 0.9285714285714286, 0.5, + 0.9285714285714286, 0.5, + 0.07142857142857142, 0.6428571428571429, + 0.07142857142857142, 0.6428571428571429, + 0.07142857142857142, 0.6428571428571429, + 0.07142857142857142, 0.6428571428571429, + 0.07142857142857142, 0.6428571428571429, + 0.07142857142857142, 0.6428571428571429, + 0.21428571428571427, 0.6428571428571429, + 0.21428571428571427, 0.6428571428571429, + 0.21428571428571427, 0.6428571428571429, + 0.21428571428571427, 0.6428571428571429, + 0.21428571428571427, 0.6428571428571429, + 0.21428571428571427, 0.6428571428571429, + 0.35714285714285715, 0.6428571428571429, + 0.35714285714285715, 0.6428571428571429, + 0.35714285714285715, 0.6428571428571429, + 0.35714285714285715, 0.6428571428571429, + 0.35714285714285715, 0.6428571428571429, + 0.35714285714285715, 0.6428571428571429, + 0.5, 0.6428571428571429, + 0.5, 0.6428571428571429, + 0.5, 0.6428571428571429, + 0.5, 0.6428571428571429, + 0.5, 0.6428571428571429, + 0.5, 0.6428571428571429, + 0.6428571428571429, 0.6428571428571429, + 0.6428571428571429, 0.6428571428571429, + 0.6428571428571429, 0.6428571428571429, + 0.6428571428571429, 0.6428571428571429, + 0.6428571428571429, 0.6428571428571429, + 0.6428571428571429, 0.6428571428571429, + 0.7857142857142857, 0.6428571428571429, + 0.7857142857142857, 0.6428571428571429, + 0.7857142857142857, 0.6428571428571429, + 0.7857142857142857, 0.6428571428571429, + 0.7857142857142857, 0.6428571428571429, + 0.7857142857142857, 0.6428571428571429, + 0.9285714285714286, 0.6428571428571429, + 0.9285714285714286, 0.6428571428571429, + 0.9285714285714286, 0.6428571428571429, + 0.9285714285714286, 0.6428571428571429, + 0.9285714285714286, 0.6428571428571429, + 0.9285714285714286, 0.6428571428571429, + 0.07142857142857142, 0.7857142857142857, + 0.07142857142857142, 0.7857142857142857, + 0.07142857142857142, 0.7857142857142857, + 0.07142857142857142, 0.7857142857142857, + 0.07142857142857142, 0.7857142857142857, + 0.07142857142857142, 0.7857142857142857, + 0.21428571428571427, 0.7857142857142857, + 0.21428571428571427, 0.7857142857142857, + 0.21428571428571427, 0.7857142857142857, + 0.21428571428571427, 0.7857142857142857, + 0.21428571428571427, 0.7857142857142857, + 0.21428571428571427, 0.7857142857142857, + 0.35714285714285715, 0.7857142857142857, + 0.35714285714285715, 0.7857142857142857, + 0.35714285714285715, 0.7857142857142857, + 0.35714285714285715, 0.7857142857142857, + 0.35714285714285715, 0.7857142857142857, + 0.35714285714285715, 0.7857142857142857, + 0.5, 0.7857142857142857, + 0.5, 0.7857142857142857, + 0.5, 0.7857142857142857, + 0.5, 0.7857142857142857, + 0.5, 0.7857142857142857, + 0.5, 0.7857142857142857, + 0.6428571428571429, 0.7857142857142857, + 0.6428571428571429, 0.7857142857142857, + 0.6428571428571429, 0.7857142857142857, + 0.6428571428571429, 0.7857142857142857, + 0.6428571428571429, 0.7857142857142857, + 0.6428571428571429, 0.7857142857142857, + 0.7857142857142857, 0.7857142857142857, + 0.7857142857142857, 0.7857142857142857, + 0.7857142857142857, 0.7857142857142857, + 0.7857142857142857, 0.7857142857142857, + 0.7857142857142857, 0.7857142857142857, + 0.7857142857142857, 0.7857142857142857, + 0.9285714285714286, 0.7857142857142857, + 0.9285714285714286, 0.7857142857142857, + 0.9285714285714286, 0.7857142857142857, + 0.9285714285714286, 0.7857142857142857, + 0.9285714285714286, 0.7857142857142857, + 0.9285714285714286, 0.7857142857142857, + 0.07142857142857142, 0.9285714285714286, + 0.07142857142857142, 0.9285714285714286, + 0.07142857142857142, 0.9285714285714286, + 0.07142857142857142, 0.9285714285714286, + 0.07142857142857142, 0.9285714285714286, + 0.07142857142857142, 0.9285714285714286, + 0.21428571428571427, 0.9285714285714286, + 0.21428571428571427, 0.9285714285714286, + 0.21428571428571427, 0.9285714285714286, + 0.21428571428571427, 0.9285714285714286, + 0.21428571428571427, 0.9285714285714286, + 0.21428571428571427, 0.9285714285714286, + 0.35714285714285715, 0.9285714285714286, + 0.35714285714285715, 0.9285714285714286, + 0.35714285714285715, 0.9285714285714286, + 0.35714285714285715, 0.9285714285714286, + 0.35714285714285715, 0.9285714285714286, + 0.35714285714285715, 0.9285714285714286, + 0.5, 0.9285714285714286, + 0.5, 0.9285714285714286, + 0.5, 0.9285714285714286, + 0.5, 0.9285714285714286, + 0.5, 0.9285714285714286, + 0.5, 0.9285714285714286, + 0.6428571428571429, 0.9285714285714286, + 0.6428571428571429, 0.9285714285714286, + 0.6428571428571429, 0.9285714285714286, + 0.6428571428571429, 0.9285714285714286, + 0.6428571428571429, 0.9285714285714286, + 0.6428571428571429, 0.9285714285714286, + 0.7857142857142857, 0.9285714285714286, + 0.7857142857142857, 0.9285714285714286, + 0.7857142857142857, 0.9285714285714286, + 0.7857142857142857, 0.9285714285714286, + 0.7857142857142857, 0.9285714285714286, + 0.7857142857142857, 0.9285714285714286, + 0.9285714285714286, 0.9285714285714286, + 0.9285714285714286, 0.9285714285714286, + 0.9285714285714286, 0.9285714285714286, + 0.9285714285714286, 0.9285714285714286, + 0.9285714285714286, 0.9285714285714286, + 0.9285714285714286, 0.9285714285714286); + return anchor; +}