4811 lines
42 KiB
JavaScript
4811 lines
42 KiB
JavaScript
import { Mesh, BufferGeometry, BufferAttribute, DynamicDrawUsage, Sphere, Vector3, Color } from "three";
|
|
class MarchingCubes extends Mesh {
|
|
constructor(resolution, material, enableUvs = false, enableColors = false, maxPolyCount = 1e4) {
|
|
const geometry = new BufferGeometry();
|
|
super(geometry, material);
|
|
this.isMarchingCubes = true;
|
|
const scope = this;
|
|
const vlist = new Float32Array(12 * 3);
|
|
const nlist = new Float32Array(12 * 3);
|
|
const clist = new Float32Array(12 * 3);
|
|
this.enableUvs = enableUvs;
|
|
this.enableColors = enableColors;
|
|
this.init = function(resolution2) {
|
|
this.resolution = resolution2;
|
|
this.isolation = 80;
|
|
this.size = resolution2;
|
|
this.size2 = this.size * this.size;
|
|
this.size3 = this.size2 * this.size;
|
|
this.halfsize = this.size / 2;
|
|
this.delta = 2 / this.size;
|
|
this.yd = this.size;
|
|
this.zd = this.size2;
|
|
this.field = new Float32Array(this.size3);
|
|
this.normal_cache = new Float32Array(this.size3 * 3);
|
|
this.palette = new Float32Array(this.size3 * 3);
|
|
this.count = 0;
|
|
const maxVertexCount = maxPolyCount * 3;
|
|
this.positionArray = new Float32Array(maxVertexCount * 3);
|
|
const positionAttribute = new BufferAttribute(this.positionArray, 3);
|
|
positionAttribute.setUsage(DynamicDrawUsage);
|
|
geometry.setAttribute("position", positionAttribute);
|
|
this.normalArray = new Float32Array(maxVertexCount * 3);
|
|
const normalAttribute = new BufferAttribute(this.normalArray, 3);
|
|
normalAttribute.setUsage(DynamicDrawUsage);
|
|
geometry.setAttribute("normal", normalAttribute);
|
|
if (this.enableUvs) {
|
|
this.uvArray = new Float32Array(maxVertexCount * 2);
|
|
const uvAttribute = new BufferAttribute(this.uvArray, 2);
|
|
uvAttribute.setUsage(DynamicDrawUsage);
|
|
geometry.setAttribute("uv", uvAttribute);
|
|
}
|
|
if (this.enableColors) {
|
|
this.colorArray = new Float32Array(maxVertexCount * 3);
|
|
const colorAttribute = new BufferAttribute(this.colorArray, 3);
|
|
colorAttribute.setUsage(DynamicDrawUsage);
|
|
geometry.setAttribute("color", colorAttribute);
|
|
}
|
|
geometry.boundingSphere = new Sphere(new Vector3(), 1);
|
|
};
|
|
function lerp(a, b, t) {
|
|
return a + (b - a) * t;
|
|
}
|
|
function VIntX(q, offset, isol, x, y, z, valp1, valp2, c_offset1, c_offset2) {
|
|
const mu = (isol - valp1) / (valp2 - valp1), nc = scope.normal_cache;
|
|
vlist[offset + 0] = x + mu * scope.delta;
|
|
vlist[offset + 1] = y;
|
|
vlist[offset + 2] = z;
|
|
nlist[offset + 0] = lerp(nc[q + 0], nc[q + 3], mu);
|
|
nlist[offset + 1] = lerp(nc[q + 1], nc[q + 4], mu);
|
|
nlist[offset + 2] = lerp(nc[q + 2], nc[q + 5], mu);
|
|
clist[offset + 0] = lerp(scope.palette[c_offset1 * 3 + 0], scope.palette[c_offset2 * 3 + 0], mu);
|
|
clist[offset + 1] = lerp(scope.palette[c_offset1 * 3 + 1], scope.palette[c_offset2 * 3 + 1], mu);
|
|
clist[offset + 2] = lerp(scope.palette[c_offset1 * 3 + 2], scope.palette[c_offset2 * 3 + 2], mu);
|
|
}
|
|
function VIntY(q, offset, isol, x, y, z, valp1, valp2, c_offset1, c_offset2) {
|
|
const mu = (isol - valp1) / (valp2 - valp1), nc = scope.normal_cache;
|
|
vlist[offset + 0] = x;
|
|
vlist[offset + 1] = y + mu * scope.delta;
|
|
vlist[offset + 2] = z;
|
|
const q2 = q + scope.yd * 3;
|
|
nlist[offset + 0] = lerp(nc[q + 0], nc[q2 + 0], mu);
|
|
nlist[offset + 1] = lerp(nc[q + 1], nc[q2 + 1], mu);
|
|
nlist[offset + 2] = lerp(nc[q + 2], nc[q2 + 2], mu);
|
|
clist[offset + 0] = lerp(scope.palette[c_offset1 * 3 + 0], scope.palette[c_offset2 * 3 + 0], mu);
|
|
clist[offset + 1] = lerp(scope.palette[c_offset1 * 3 + 1], scope.palette[c_offset2 * 3 + 1], mu);
|
|
clist[offset + 2] = lerp(scope.palette[c_offset1 * 3 + 2], scope.palette[c_offset2 * 3 + 2], mu);
|
|
}
|
|
function VIntZ(q, offset, isol, x, y, z, valp1, valp2, c_offset1, c_offset2) {
|
|
const mu = (isol - valp1) / (valp2 - valp1), nc = scope.normal_cache;
|
|
vlist[offset + 0] = x;
|
|
vlist[offset + 1] = y;
|
|
vlist[offset + 2] = z + mu * scope.delta;
|
|
const q2 = q + scope.zd * 3;
|
|
nlist[offset + 0] = lerp(nc[q + 0], nc[q2 + 0], mu);
|
|
nlist[offset + 1] = lerp(nc[q + 1], nc[q2 + 1], mu);
|
|
nlist[offset + 2] = lerp(nc[q + 2], nc[q2 + 2], mu);
|
|
clist[offset + 0] = lerp(scope.palette[c_offset1 * 3 + 0], scope.palette[c_offset2 * 3 + 0], mu);
|
|
clist[offset + 1] = lerp(scope.palette[c_offset1 * 3 + 1], scope.palette[c_offset2 * 3 + 1], mu);
|
|
clist[offset + 2] = lerp(scope.palette[c_offset1 * 3 + 2], scope.palette[c_offset2 * 3 + 2], mu);
|
|
}
|
|
function compNorm(q) {
|
|
const q3 = q * 3;
|
|
if (scope.normal_cache[q3] === 0) {
|
|
scope.normal_cache[q3 + 0] = scope.field[q - 1] - scope.field[q + 1];
|
|
scope.normal_cache[q3 + 1] = scope.field[q - scope.yd] - scope.field[q + scope.yd];
|
|
scope.normal_cache[q3 + 2] = scope.field[q - scope.zd] - scope.field[q + scope.zd];
|
|
}
|
|
}
|
|
function polygonize(fx, fy, fz, q, isol) {
|
|
const q1 = q + 1, qy = q + scope.yd, qz = q + scope.zd, q1y = q1 + scope.yd, q1z = q1 + scope.zd, qyz = q + scope.yd + scope.zd, q1yz = q1 + scope.yd + scope.zd;
|
|
let cubeindex = 0;
|
|
const field0 = scope.field[q], field1 = scope.field[q1], field2 = scope.field[qy], field3 = scope.field[q1y], field4 = scope.field[qz], field5 = scope.field[q1z], field6 = scope.field[qyz], field7 = scope.field[q1yz];
|
|
if (field0 < isol)
|
|
cubeindex |= 1;
|
|
if (field1 < isol)
|
|
cubeindex |= 2;
|
|
if (field2 < isol)
|
|
cubeindex |= 8;
|
|
if (field3 < isol)
|
|
cubeindex |= 4;
|
|
if (field4 < isol)
|
|
cubeindex |= 16;
|
|
if (field5 < isol)
|
|
cubeindex |= 32;
|
|
if (field6 < isol)
|
|
cubeindex |= 128;
|
|
if (field7 < isol)
|
|
cubeindex |= 64;
|
|
const bits = edgeTable[cubeindex];
|
|
if (bits === 0)
|
|
return 0;
|
|
const d = scope.delta, fx2 = fx + d, fy2 = fy + d, fz2 = fz + d;
|
|
if (bits & 1) {
|
|
compNorm(q);
|
|
compNorm(q1);
|
|
VIntX(q * 3, 0, isol, fx, fy, fz, field0, field1, q, q1);
|
|
}
|
|
if (bits & 2) {
|
|
compNorm(q1);
|
|
compNorm(q1y);
|
|
VIntY(q1 * 3, 3, isol, fx2, fy, fz, field1, field3, q1, q1y);
|
|
}
|
|
if (bits & 4) {
|
|
compNorm(qy);
|
|
compNorm(q1y);
|
|
VIntX(qy * 3, 6, isol, fx, fy2, fz, field2, field3, qy, q1y);
|
|
}
|
|
if (bits & 8) {
|
|
compNorm(q);
|
|
compNorm(qy);
|
|
VIntY(q * 3, 9, isol, fx, fy, fz, field0, field2, q, qy);
|
|
}
|
|
if (bits & 16) {
|
|
compNorm(qz);
|
|
compNorm(q1z);
|
|
VIntX(qz * 3, 12, isol, fx, fy, fz2, field4, field5, qz, q1z);
|
|
}
|
|
if (bits & 32) {
|
|
compNorm(q1z);
|
|
compNorm(q1yz);
|
|
VIntY(q1z * 3, 15, isol, fx2, fy, fz2, field5, field7, q1z, q1yz);
|
|
}
|
|
if (bits & 64) {
|
|
compNorm(qyz);
|
|
compNorm(q1yz);
|
|
VIntX(qyz * 3, 18, isol, fx, fy2, fz2, field6, field7, qyz, q1yz);
|
|
}
|
|
if (bits & 128) {
|
|
compNorm(qz);
|
|
compNorm(qyz);
|
|
VIntY(qz * 3, 21, isol, fx, fy, fz2, field4, field6, qz, qyz);
|
|
}
|
|
if (bits & 256) {
|
|
compNorm(q);
|
|
compNorm(qz);
|
|
VIntZ(q * 3, 24, isol, fx, fy, fz, field0, field4, q, qz);
|
|
}
|
|
if (bits & 512) {
|
|
compNorm(q1);
|
|
compNorm(q1z);
|
|
VIntZ(q1 * 3, 27, isol, fx2, fy, fz, field1, field5, q1, q1z);
|
|
}
|
|
if (bits & 1024) {
|
|
compNorm(q1y);
|
|
compNorm(q1yz);
|
|
VIntZ(q1y * 3, 30, isol, fx2, fy2, fz, field3, field7, q1y, q1yz);
|
|
}
|
|
if (bits & 2048) {
|
|
compNorm(qy);
|
|
compNorm(qyz);
|
|
VIntZ(qy * 3, 33, isol, fx, fy2, fz, field2, field6, qy, qyz);
|
|
}
|
|
cubeindex <<= 4;
|
|
let o1, o2, o3, numtris = 0, i = 0;
|
|
while (triTable[cubeindex + i] != -1) {
|
|
o1 = cubeindex + i;
|
|
o2 = o1 + 1;
|
|
o3 = o1 + 2;
|
|
posnormtriv(vlist, nlist, clist, 3 * triTable[o1], 3 * triTable[o2], 3 * triTable[o3]);
|
|
i += 3;
|
|
numtris++;
|
|
}
|
|
return numtris;
|
|
}
|
|
function posnormtriv(pos, norm, colors, o1, o2, o3) {
|
|
const c = scope.count * 3;
|
|
scope.positionArray[c + 0] = pos[o1];
|
|
scope.positionArray[c + 1] = pos[o1 + 1];
|
|
scope.positionArray[c + 2] = pos[o1 + 2];
|
|
scope.positionArray[c + 3] = pos[o2];
|
|
scope.positionArray[c + 4] = pos[o2 + 1];
|
|
scope.positionArray[c + 5] = pos[o2 + 2];
|
|
scope.positionArray[c + 6] = pos[o3];
|
|
scope.positionArray[c + 7] = pos[o3 + 1];
|
|
scope.positionArray[c + 8] = pos[o3 + 2];
|
|
if (scope.material.flatShading === true) {
|
|
const nx = (norm[o1 + 0] + norm[o2 + 0] + norm[o3 + 0]) / 3;
|
|
const ny = (norm[o1 + 1] + norm[o2 + 1] + norm[o3 + 1]) / 3;
|
|
const nz = (norm[o1 + 2] + norm[o2 + 2] + norm[o3 + 2]) / 3;
|
|
scope.normalArray[c + 0] = nx;
|
|
scope.normalArray[c + 1] = ny;
|
|
scope.normalArray[c + 2] = nz;
|
|
scope.normalArray[c + 3] = nx;
|
|
scope.normalArray[c + 4] = ny;
|
|
scope.normalArray[c + 5] = nz;
|
|
scope.normalArray[c + 6] = nx;
|
|
scope.normalArray[c + 7] = ny;
|
|
scope.normalArray[c + 8] = nz;
|
|
} else {
|
|
scope.normalArray[c + 0] = norm[o1 + 0];
|
|
scope.normalArray[c + 1] = norm[o1 + 1];
|
|
scope.normalArray[c + 2] = norm[o1 + 2];
|
|
scope.normalArray[c + 3] = norm[o2 + 0];
|
|
scope.normalArray[c + 4] = norm[o2 + 1];
|
|
scope.normalArray[c + 5] = norm[o2 + 2];
|
|
scope.normalArray[c + 6] = norm[o3 + 0];
|
|
scope.normalArray[c + 7] = norm[o3 + 1];
|
|
scope.normalArray[c + 8] = norm[o3 + 2];
|
|
}
|
|
if (scope.enableUvs) {
|
|
const d = scope.count * 2;
|
|
scope.uvArray[d + 0] = pos[o1 + 0];
|
|
scope.uvArray[d + 1] = pos[o1 + 2];
|
|
scope.uvArray[d + 2] = pos[o2 + 0];
|
|
scope.uvArray[d + 3] = pos[o2 + 2];
|
|
scope.uvArray[d + 4] = pos[o3 + 0];
|
|
scope.uvArray[d + 5] = pos[o3 + 2];
|
|
}
|
|
if (scope.enableColors) {
|
|
scope.colorArray[c + 0] = colors[o1 + 0];
|
|
scope.colorArray[c + 1] = colors[o1 + 1];
|
|
scope.colorArray[c + 2] = colors[o1 + 2];
|
|
scope.colorArray[c + 3] = colors[o2 + 0];
|
|
scope.colorArray[c + 4] = colors[o2 + 1];
|
|
scope.colorArray[c + 5] = colors[o2 + 2];
|
|
scope.colorArray[c + 6] = colors[o3 + 0];
|
|
scope.colorArray[c + 7] = colors[o3 + 1];
|
|
scope.colorArray[c + 8] = colors[o3 + 2];
|
|
}
|
|
scope.count += 3;
|
|
}
|
|
this.addBall = function(ballx, bally, ballz, strength, subtract, colors) {
|
|
const sign = Math.sign(strength);
|
|
strength = Math.abs(strength);
|
|
const userDefineColor = !(colors === void 0 || colors === null);
|
|
let ballColor = new Color(ballx, bally, ballz);
|
|
if (userDefineColor) {
|
|
try {
|
|
ballColor = colors instanceof Color ? colors : Array.isArray(colors) ? new Color(
|
|
Math.min(Math.abs(colors[0]), 1),
|
|
Math.min(Math.abs(colors[1]), 1),
|
|
Math.min(Math.abs(colors[2]), 1)
|
|
) : new Color(colors);
|
|
} catch (err) {
|
|
ballColor = new Color(ballx, bally, ballz);
|
|
}
|
|
}
|
|
const radius = this.size * Math.sqrt(strength / subtract), zs = ballz * this.size, ys = bally * this.size, xs = ballx * this.size;
|
|
let min_z = Math.floor(zs - radius);
|
|
if (min_z < 1)
|
|
min_z = 1;
|
|
let max_z = Math.floor(zs + radius);
|
|
if (max_z > this.size - 1)
|
|
max_z = this.size - 1;
|
|
let min_y = Math.floor(ys - radius);
|
|
if (min_y < 1)
|
|
min_y = 1;
|
|
let max_y = Math.floor(ys + radius);
|
|
if (max_y > this.size - 1)
|
|
max_y = this.size - 1;
|
|
let min_x = Math.floor(xs - radius);
|
|
if (min_x < 1)
|
|
min_x = 1;
|
|
let max_x = Math.floor(xs + radius);
|
|
if (max_x > this.size - 1)
|
|
max_x = this.size - 1;
|
|
let x, y, z, y_offset, z_offset, fx, fy, fz, fz2, fy2, val;
|
|
for (z = min_z; z < max_z; z++) {
|
|
z_offset = this.size2 * z;
|
|
fz = z / this.size - ballz;
|
|
fz2 = fz * fz;
|
|
for (y = min_y; y < max_y; y++) {
|
|
y_offset = z_offset + this.size * y;
|
|
fy = y / this.size - bally;
|
|
fy2 = fy * fy;
|
|
for (x = min_x; x < max_x; x++) {
|
|
fx = x / this.size - ballx;
|
|
val = strength / (1e-6 + fx * fx + fy2 + fz2) - subtract;
|
|
if (val > 0) {
|
|
this.field[y_offset + x] += val * sign;
|
|
const ratio = Math.sqrt((x - xs) * (x - xs) + (y - ys) * (y - ys) + (z - zs) * (z - zs)) / radius;
|
|
const contrib = 1 - ratio * ratio * ratio * (ratio * (ratio * 6 - 15) + 10);
|
|
this.palette[(y_offset + x) * 3 + 0] += ballColor.r * contrib;
|
|
this.palette[(y_offset + x) * 3 + 1] += ballColor.g * contrib;
|
|
this.palette[(y_offset + x) * 3 + 2] += ballColor.b * contrib;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this.addPlaneX = function(strength, subtract) {
|
|
const size = this.size, yd = this.yd, zd = this.zd, field = this.field;
|
|
let x, y, z, xx, val, xdiv, cxy, dist = size * Math.sqrt(strength / subtract);
|
|
if (dist > size)
|
|
dist = size;
|
|
for (x = 0; x < dist; x++) {
|
|
xdiv = x / size;
|
|
xx = xdiv * xdiv;
|
|
val = strength / (1e-4 + xx) - subtract;
|
|
if (val > 0) {
|
|
for (y = 0; y < size; y++) {
|
|
cxy = x + y * yd;
|
|
for (z = 0; z < size; z++) {
|
|
field[zd * z + cxy] += val;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this.addPlaneY = function(strength, subtract) {
|
|
const size = this.size, yd = this.yd, zd = this.zd, field = this.field;
|
|
let x, y, z, yy, val, ydiv, cy, cxy, dist = size * Math.sqrt(strength / subtract);
|
|
if (dist > size)
|
|
dist = size;
|
|
for (y = 0; y < dist; y++) {
|
|
ydiv = y / size;
|
|
yy = ydiv * ydiv;
|
|
val = strength / (1e-4 + yy) - subtract;
|
|
if (val > 0) {
|
|
cy = y * yd;
|
|
for (x = 0; x < size; x++) {
|
|
cxy = cy + x;
|
|
for (z = 0; z < size; z++)
|
|
field[zd * z + cxy] += val;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this.addPlaneZ = function(strength, subtract) {
|
|
const size = this.size, yd = this.yd, zd = this.zd, field = this.field;
|
|
let x, y, z, zz, val, zdiv, cz, cyz, dist = size * Math.sqrt(strength / subtract);
|
|
if (dist > size)
|
|
dist = size;
|
|
for (z = 0; z < dist; z++) {
|
|
zdiv = z / size;
|
|
zz = zdiv * zdiv;
|
|
val = strength / (1e-4 + zz) - subtract;
|
|
if (val > 0) {
|
|
cz = zd * z;
|
|
for (y = 0; y < size; y++) {
|
|
cyz = cz + y * yd;
|
|
for (x = 0; x < size; x++)
|
|
field[cyz + x] += val;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this.setCell = function(x, y, z, value) {
|
|
const index = this.size2 * z + this.size * y + x;
|
|
this.field[index] = value;
|
|
};
|
|
this.getCell = function(x, y, z) {
|
|
const index = this.size2 * z + this.size * y + x;
|
|
return this.field[index];
|
|
};
|
|
this.blur = function(intensity = 1) {
|
|
const field = this.field;
|
|
const fieldCopy = field.slice();
|
|
const size = this.size;
|
|
const size2 = this.size2;
|
|
for (let x = 0; x < size; x++) {
|
|
for (let y = 0; y < size; y++) {
|
|
for (let z = 0; z < size; z++) {
|
|
const index = size2 * z + size * y + x;
|
|
let val = fieldCopy[index];
|
|
let count = 1;
|
|
for (let x2 = -1; x2 <= 1; x2 += 2) {
|
|
const x3 = x2 + x;
|
|
if (x3 < 0 || x3 >= size)
|
|
continue;
|
|
for (let y2 = -1; y2 <= 1; y2 += 2) {
|
|
const y3 = y2 + y;
|
|
if (y3 < 0 || y3 >= size)
|
|
continue;
|
|
for (let z2 = -1; z2 <= 1; z2 += 2) {
|
|
const z3 = z2 + z;
|
|
if (z3 < 0 || z3 >= size)
|
|
continue;
|
|
const index2 = size2 * z3 + size * y3 + x3;
|
|
const val2 = fieldCopy[index2];
|
|
count++;
|
|
val += intensity * (val2 - val) / count;
|
|
}
|
|
}
|
|
}
|
|
field[index] = val;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this.reset = function() {
|
|
for (let i = 0; i < this.size3; i++) {
|
|
this.normal_cache[i * 3] = 0;
|
|
this.field[i] = 0;
|
|
this.palette[i * 3] = this.palette[i * 3 + 1] = this.palette[i * 3 + 2] = 0;
|
|
}
|
|
};
|
|
this.update = function() {
|
|
this.count = 0;
|
|
const smin2 = this.size - 2;
|
|
for (let z = 1; z < smin2; z++) {
|
|
const z_offset = this.size2 * z;
|
|
const fz = (z - this.halfsize) / this.halfsize;
|
|
for (let y = 1; y < smin2; y++) {
|
|
const y_offset = z_offset + this.size * y;
|
|
const fy = (y - this.halfsize) / this.halfsize;
|
|
for (let x = 1; x < smin2; x++) {
|
|
const fx = (x - this.halfsize) / this.halfsize;
|
|
const q = y_offset + x;
|
|
polygonize(fx, fy, fz, q, this.isolation);
|
|
}
|
|
}
|
|
}
|
|
this.geometry.setDrawRange(0, this.count);
|
|
geometry.getAttribute("position").needsUpdate = true;
|
|
geometry.getAttribute("normal").needsUpdate = true;
|
|
if (this.enableUvs)
|
|
geometry.getAttribute("uv").needsUpdate = true;
|
|
if (this.enableColors)
|
|
geometry.getAttribute("color").needsUpdate = true;
|
|
if (this.count / 3 > maxPolyCount)
|
|
console.warn(
|
|
"THREE.MarchingCubes: Geometry buffers too small for rendering. Please create an instance with a higher poly count."
|
|
);
|
|
};
|
|
this.init(resolution);
|
|
}
|
|
}
|
|
const edgeTable = new Int32Array([
|
|
0,
|
|
265,
|
|
515,
|
|
778,
|
|
1030,
|
|
1295,
|
|
1541,
|
|
1804,
|
|
2060,
|
|
2309,
|
|
2575,
|
|
2822,
|
|
3082,
|
|
3331,
|
|
3593,
|
|
3840,
|
|
400,
|
|
153,
|
|
915,
|
|
666,
|
|
1430,
|
|
1183,
|
|
1941,
|
|
1692,
|
|
2460,
|
|
2197,
|
|
2975,
|
|
2710,
|
|
3482,
|
|
3219,
|
|
3993,
|
|
3728,
|
|
560,
|
|
825,
|
|
51,
|
|
314,
|
|
1590,
|
|
1855,
|
|
1077,
|
|
1340,
|
|
2620,
|
|
2869,
|
|
2111,
|
|
2358,
|
|
3642,
|
|
3891,
|
|
3129,
|
|
3376,
|
|
928,
|
|
681,
|
|
419,
|
|
170,
|
|
1958,
|
|
1711,
|
|
1445,
|
|
1196,
|
|
2988,
|
|
2725,
|
|
2479,
|
|
2214,
|
|
4010,
|
|
3747,
|
|
3497,
|
|
3232,
|
|
1120,
|
|
1385,
|
|
1635,
|
|
1898,
|
|
102,
|
|
367,
|
|
613,
|
|
876,
|
|
3180,
|
|
3429,
|
|
3695,
|
|
3942,
|
|
2154,
|
|
2403,
|
|
2665,
|
|
2912,
|
|
1520,
|
|
1273,
|
|
2035,
|
|
1786,
|
|
502,
|
|
255,
|
|
1013,
|
|
764,
|
|
3580,
|
|
3317,
|
|
4095,
|
|
3830,
|
|
2554,
|
|
2291,
|
|
3065,
|
|
2800,
|
|
1616,
|
|
1881,
|
|
1107,
|
|
1370,
|
|
598,
|
|
863,
|
|
85,
|
|
348,
|
|
3676,
|
|
3925,
|
|
3167,
|
|
3414,
|
|
2650,
|
|
2899,
|
|
2137,
|
|
2384,
|
|
1984,
|
|
1737,
|
|
1475,
|
|
1226,
|
|
966,
|
|
719,
|
|
453,
|
|
204,
|
|
4044,
|
|
3781,
|
|
3535,
|
|
3270,
|
|
3018,
|
|
2755,
|
|
2505,
|
|
2240,
|
|
2240,
|
|
2505,
|
|
2755,
|
|
3018,
|
|
3270,
|
|
3535,
|
|
3781,
|
|
4044,
|
|
204,
|
|
453,
|
|
719,
|
|
966,
|
|
1226,
|
|
1475,
|
|
1737,
|
|
1984,
|
|
2384,
|
|
2137,
|
|
2899,
|
|
2650,
|
|
3414,
|
|
3167,
|
|
3925,
|
|
3676,
|
|
348,
|
|
85,
|
|
863,
|
|
598,
|
|
1370,
|
|
1107,
|
|
1881,
|
|
1616,
|
|
2800,
|
|
3065,
|
|
2291,
|
|
2554,
|
|
3830,
|
|
4095,
|
|
3317,
|
|
3580,
|
|
764,
|
|
1013,
|
|
255,
|
|
502,
|
|
1786,
|
|
2035,
|
|
1273,
|
|
1520,
|
|
2912,
|
|
2665,
|
|
2403,
|
|
2154,
|
|
3942,
|
|
3695,
|
|
3429,
|
|
3180,
|
|
876,
|
|
613,
|
|
367,
|
|
102,
|
|
1898,
|
|
1635,
|
|
1385,
|
|
1120,
|
|
3232,
|
|
3497,
|
|
3747,
|
|
4010,
|
|
2214,
|
|
2479,
|
|
2725,
|
|
2988,
|
|
1196,
|
|
1445,
|
|
1711,
|
|
1958,
|
|
170,
|
|
419,
|
|
681,
|
|
928,
|
|
3376,
|
|
3129,
|
|
3891,
|
|
3642,
|
|
2358,
|
|
2111,
|
|
2869,
|
|
2620,
|
|
1340,
|
|
1077,
|
|
1855,
|
|
1590,
|
|
314,
|
|
51,
|
|
825,
|
|
560,
|
|
3728,
|
|
3993,
|
|
3219,
|
|
3482,
|
|
2710,
|
|
2975,
|
|
2197,
|
|
2460,
|
|
1692,
|
|
1941,
|
|
1183,
|
|
1430,
|
|
666,
|
|
915,
|
|
153,
|
|
400,
|
|
3840,
|
|
3593,
|
|
3331,
|
|
3082,
|
|
2822,
|
|
2575,
|
|
2309,
|
|
2060,
|
|
1804,
|
|
1541,
|
|
1295,
|
|
1030,
|
|
778,
|
|
515,
|
|
265,
|
|
0
|
|
]);
|
|
const triTable = new Int32Array([
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
8,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
1,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
8,
|
|
3,
|
|
9,
|
|
8,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
2,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
8,
|
|
3,
|
|
1,
|
|
2,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
2,
|
|
10,
|
|
0,
|
|
2,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
8,
|
|
3,
|
|
2,
|
|
10,
|
|
8,
|
|
10,
|
|
9,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
11,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
11,
|
|
2,
|
|
8,
|
|
11,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
9,
|
|
0,
|
|
2,
|
|
3,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
11,
|
|
2,
|
|
1,
|
|
9,
|
|
11,
|
|
9,
|
|
8,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
10,
|
|
1,
|
|
11,
|
|
10,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
10,
|
|
1,
|
|
0,
|
|
8,
|
|
10,
|
|
8,
|
|
11,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
9,
|
|
0,
|
|
3,
|
|
11,
|
|
9,
|
|
11,
|
|
10,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
8,
|
|
10,
|
|
10,
|
|
8,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
7,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
3,
|
|
0,
|
|
7,
|
|
3,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
1,
|
|
9,
|
|
8,
|
|
4,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
1,
|
|
9,
|
|
4,
|
|
7,
|
|
1,
|
|
7,
|
|
3,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
2,
|
|
10,
|
|
8,
|
|
4,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
4,
|
|
7,
|
|
3,
|
|
0,
|
|
4,
|
|
1,
|
|
2,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
2,
|
|
10,
|
|
9,
|
|
0,
|
|
2,
|
|
8,
|
|
4,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
10,
|
|
9,
|
|
2,
|
|
9,
|
|
7,
|
|
2,
|
|
7,
|
|
3,
|
|
7,
|
|
9,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
4,
|
|
7,
|
|
3,
|
|
11,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
11,
|
|
4,
|
|
7,
|
|
11,
|
|
2,
|
|
4,
|
|
2,
|
|
0,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
0,
|
|
1,
|
|
8,
|
|
4,
|
|
7,
|
|
2,
|
|
3,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
7,
|
|
11,
|
|
9,
|
|
4,
|
|
11,
|
|
9,
|
|
11,
|
|
2,
|
|
9,
|
|
2,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
10,
|
|
1,
|
|
3,
|
|
11,
|
|
10,
|
|
7,
|
|
8,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
11,
|
|
10,
|
|
1,
|
|
4,
|
|
11,
|
|
1,
|
|
0,
|
|
4,
|
|
7,
|
|
11,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
7,
|
|
8,
|
|
9,
|
|
0,
|
|
11,
|
|
9,
|
|
11,
|
|
10,
|
|
11,
|
|
0,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
7,
|
|
11,
|
|
4,
|
|
11,
|
|
9,
|
|
9,
|
|
11,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
5,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
5,
|
|
4,
|
|
0,
|
|
8,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
5,
|
|
4,
|
|
1,
|
|
5,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
5,
|
|
4,
|
|
8,
|
|
3,
|
|
5,
|
|
3,
|
|
1,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
2,
|
|
10,
|
|
9,
|
|
5,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
0,
|
|
8,
|
|
1,
|
|
2,
|
|
10,
|
|
4,
|
|
9,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
2,
|
|
10,
|
|
5,
|
|
4,
|
|
2,
|
|
4,
|
|
0,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
10,
|
|
5,
|
|
3,
|
|
2,
|
|
5,
|
|
3,
|
|
5,
|
|
4,
|
|
3,
|
|
4,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
5,
|
|
4,
|
|
2,
|
|
3,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
11,
|
|
2,
|
|
0,
|
|
8,
|
|
11,
|
|
4,
|
|
9,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
5,
|
|
4,
|
|
0,
|
|
1,
|
|
5,
|
|
2,
|
|
3,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
1,
|
|
5,
|
|
2,
|
|
5,
|
|
8,
|
|
2,
|
|
8,
|
|
11,
|
|
4,
|
|
8,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
3,
|
|
11,
|
|
10,
|
|
1,
|
|
3,
|
|
9,
|
|
5,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
9,
|
|
5,
|
|
0,
|
|
8,
|
|
1,
|
|
8,
|
|
10,
|
|
1,
|
|
8,
|
|
11,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
4,
|
|
0,
|
|
5,
|
|
0,
|
|
11,
|
|
5,
|
|
11,
|
|
10,
|
|
11,
|
|
0,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
4,
|
|
8,
|
|
5,
|
|
8,
|
|
10,
|
|
10,
|
|
8,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
7,
|
|
8,
|
|
5,
|
|
7,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
3,
|
|
0,
|
|
9,
|
|
5,
|
|
3,
|
|
5,
|
|
7,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
7,
|
|
8,
|
|
0,
|
|
1,
|
|
7,
|
|
1,
|
|
5,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
5,
|
|
3,
|
|
3,
|
|
5,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
7,
|
|
8,
|
|
9,
|
|
5,
|
|
7,
|
|
10,
|
|
1,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
1,
|
|
2,
|
|
9,
|
|
5,
|
|
0,
|
|
5,
|
|
3,
|
|
0,
|
|
5,
|
|
7,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
0,
|
|
2,
|
|
8,
|
|
2,
|
|
5,
|
|
8,
|
|
5,
|
|
7,
|
|
10,
|
|
5,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
10,
|
|
5,
|
|
2,
|
|
5,
|
|
3,
|
|
3,
|
|
5,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
9,
|
|
5,
|
|
7,
|
|
8,
|
|
9,
|
|
3,
|
|
11,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
5,
|
|
7,
|
|
9,
|
|
7,
|
|
2,
|
|
9,
|
|
2,
|
|
0,
|
|
2,
|
|
7,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
3,
|
|
11,
|
|
0,
|
|
1,
|
|
8,
|
|
1,
|
|
7,
|
|
8,
|
|
1,
|
|
5,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
11,
|
|
2,
|
|
1,
|
|
11,
|
|
1,
|
|
7,
|
|
7,
|
|
1,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
5,
|
|
8,
|
|
8,
|
|
5,
|
|
7,
|
|
10,
|
|
1,
|
|
3,
|
|
10,
|
|
3,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
7,
|
|
0,
|
|
5,
|
|
0,
|
|
9,
|
|
7,
|
|
11,
|
|
0,
|
|
1,
|
|
0,
|
|
10,
|
|
11,
|
|
10,
|
|
0,
|
|
-1,
|
|
11,
|
|
10,
|
|
0,
|
|
11,
|
|
0,
|
|
3,
|
|
10,
|
|
5,
|
|
0,
|
|
8,
|
|
0,
|
|
7,
|
|
5,
|
|
7,
|
|
0,
|
|
-1,
|
|
11,
|
|
10,
|
|
5,
|
|
7,
|
|
11,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
6,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
8,
|
|
3,
|
|
5,
|
|
10,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
0,
|
|
1,
|
|
5,
|
|
10,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
8,
|
|
3,
|
|
1,
|
|
9,
|
|
8,
|
|
5,
|
|
10,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
6,
|
|
5,
|
|
2,
|
|
6,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
6,
|
|
5,
|
|
1,
|
|
2,
|
|
6,
|
|
3,
|
|
0,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
6,
|
|
5,
|
|
9,
|
|
0,
|
|
6,
|
|
0,
|
|
2,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
9,
|
|
8,
|
|
5,
|
|
8,
|
|
2,
|
|
5,
|
|
2,
|
|
6,
|
|
3,
|
|
2,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
3,
|
|
11,
|
|
10,
|
|
6,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
11,
|
|
0,
|
|
8,
|
|
11,
|
|
2,
|
|
0,
|
|
10,
|
|
6,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
1,
|
|
9,
|
|
2,
|
|
3,
|
|
11,
|
|
5,
|
|
10,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
10,
|
|
6,
|
|
1,
|
|
9,
|
|
2,
|
|
9,
|
|
11,
|
|
2,
|
|
9,
|
|
8,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
3,
|
|
11,
|
|
6,
|
|
5,
|
|
3,
|
|
5,
|
|
1,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
8,
|
|
11,
|
|
0,
|
|
11,
|
|
5,
|
|
0,
|
|
5,
|
|
1,
|
|
5,
|
|
11,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
11,
|
|
6,
|
|
0,
|
|
3,
|
|
6,
|
|
0,
|
|
6,
|
|
5,
|
|
0,
|
|
5,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
5,
|
|
9,
|
|
6,
|
|
9,
|
|
11,
|
|
11,
|
|
9,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
10,
|
|
6,
|
|
4,
|
|
7,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
3,
|
|
0,
|
|
4,
|
|
7,
|
|
3,
|
|
6,
|
|
5,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
9,
|
|
0,
|
|
5,
|
|
10,
|
|
6,
|
|
8,
|
|
4,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
6,
|
|
5,
|
|
1,
|
|
9,
|
|
7,
|
|
1,
|
|
7,
|
|
3,
|
|
7,
|
|
9,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
1,
|
|
2,
|
|
6,
|
|
5,
|
|
1,
|
|
4,
|
|
7,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
2,
|
|
5,
|
|
5,
|
|
2,
|
|
6,
|
|
3,
|
|
0,
|
|
4,
|
|
3,
|
|
4,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
4,
|
|
7,
|
|
9,
|
|
0,
|
|
5,
|
|
0,
|
|
6,
|
|
5,
|
|
0,
|
|
2,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
3,
|
|
9,
|
|
7,
|
|
9,
|
|
4,
|
|
3,
|
|
2,
|
|
9,
|
|
5,
|
|
9,
|
|
6,
|
|
2,
|
|
6,
|
|
9,
|
|
-1,
|
|
3,
|
|
11,
|
|
2,
|
|
7,
|
|
8,
|
|
4,
|
|
10,
|
|
6,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
10,
|
|
6,
|
|
4,
|
|
7,
|
|
2,
|
|
4,
|
|
2,
|
|
0,
|
|
2,
|
|
7,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
1,
|
|
9,
|
|
4,
|
|
7,
|
|
8,
|
|
2,
|
|
3,
|
|
11,
|
|
5,
|
|
10,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
2,
|
|
1,
|
|
9,
|
|
11,
|
|
2,
|
|
9,
|
|
4,
|
|
11,
|
|
7,
|
|
11,
|
|
4,
|
|
5,
|
|
10,
|
|
6,
|
|
-1,
|
|
8,
|
|
4,
|
|
7,
|
|
3,
|
|
11,
|
|
5,
|
|
3,
|
|
5,
|
|
1,
|
|
5,
|
|
11,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
1,
|
|
11,
|
|
5,
|
|
11,
|
|
6,
|
|
1,
|
|
0,
|
|
11,
|
|
7,
|
|
11,
|
|
4,
|
|
0,
|
|
4,
|
|
11,
|
|
-1,
|
|
0,
|
|
5,
|
|
9,
|
|
0,
|
|
6,
|
|
5,
|
|
0,
|
|
3,
|
|
6,
|
|
11,
|
|
6,
|
|
3,
|
|
8,
|
|
4,
|
|
7,
|
|
-1,
|
|
6,
|
|
5,
|
|
9,
|
|
6,
|
|
9,
|
|
11,
|
|
4,
|
|
7,
|
|
9,
|
|
7,
|
|
11,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
4,
|
|
9,
|
|
6,
|
|
4,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
10,
|
|
6,
|
|
4,
|
|
9,
|
|
10,
|
|
0,
|
|
8,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
0,
|
|
1,
|
|
10,
|
|
6,
|
|
0,
|
|
6,
|
|
4,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
3,
|
|
1,
|
|
8,
|
|
1,
|
|
6,
|
|
8,
|
|
6,
|
|
4,
|
|
6,
|
|
1,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
4,
|
|
9,
|
|
1,
|
|
2,
|
|
4,
|
|
2,
|
|
6,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
0,
|
|
8,
|
|
1,
|
|
2,
|
|
9,
|
|
2,
|
|
4,
|
|
9,
|
|
2,
|
|
6,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
2,
|
|
4,
|
|
4,
|
|
2,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
3,
|
|
2,
|
|
8,
|
|
2,
|
|
4,
|
|
4,
|
|
2,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
4,
|
|
9,
|
|
10,
|
|
6,
|
|
4,
|
|
11,
|
|
2,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
8,
|
|
2,
|
|
2,
|
|
8,
|
|
11,
|
|
4,
|
|
9,
|
|
10,
|
|
4,
|
|
10,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
11,
|
|
2,
|
|
0,
|
|
1,
|
|
6,
|
|
0,
|
|
6,
|
|
4,
|
|
6,
|
|
1,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
4,
|
|
1,
|
|
6,
|
|
1,
|
|
10,
|
|
4,
|
|
8,
|
|
1,
|
|
2,
|
|
1,
|
|
11,
|
|
8,
|
|
11,
|
|
1,
|
|
-1,
|
|
9,
|
|
6,
|
|
4,
|
|
9,
|
|
3,
|
|
6,
|
|
9,
|
|
1,
|
|
3,
|
|
11,
|
|
6,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
11,
|
|
1,
|
|
8,
|
|
1,
|
|
0,
|
|
11,
|
|
6,
|
|
1,
|
|
9,
|
|
1,
|
|
4,
|
|
6,
|
|
4,
|
|
1,
|
|
-1,
|
|
3,
|
|
11,
|
|
6,
|
|
3,
|
|
6,
|
|
0,
|
|
0,
|
|
6,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
4,
|
|
8,
|
|
11,
|
|
6,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
10,
|
|
6,
|
|
7,
|
|
8,
|
|
10,
|
|
8,
|
|
9,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
7,
|
|
3,
|
|
0,
|
|
10,
|
|
7,
|
|
0,
|
|
9,
|
|
10,
|
|
6,
|
|
7,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
6,
|
|
7,
|
|
1,
|
|
10,
|
|
7,
|
|
1,
|
|
7,
|
|
8,
|
|
1,
|
|
8,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
6,
|
|
7,
|
|
10,
|
|
7,
|
|
1,
|
|
1,
|
|
7,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
2,
|
|
6,
|
|
1,
|
|
6,
|
|
8,
|
|
1,
|
|
8,
|
|
9,
|
|
8,
|
|
6,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
6,
|
|
9,
|
|
2,
|
|
9,
|
|
1,
|
|
6,
|
|
7,
|
|
9,
|
|
0,
|
|
9,
|
|
3,
|
|
7,
|
|
3,
|
|
9,
|
|
-1,
|
|
7,
|
|
8,
|
|
0,
|
|
7,
|
|
0,
|
|
6,
|
|
6,
|
|
0,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
3,
|
|
2,
|
|
6,
|
|
7,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
3,
|
|
11,
|
|
10,
|
|
6,
|
|
8,
|
|
10,
|
|
8,
|
|
9,
|
|
8,
|
|
6,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
0,
|
|
7,
|
|
2,
|
|
7,
|
|
11,
|
|
0,
|
|
9,
|
|
7,
|
|
6,
|
|
7,
|
|
10,
|
|
9,
|
|
10,
|
|
7,
|
|
-1,
|
|
1,
|
|
8,
|
|
0,
|
|
1,
|
|
7,
|
|
8,
|
|
1,
|
|
10,
|
|
7,
|
|
6,
|
|
7,
|
|
10,
|
|
2,
|
|
3,
|
|
11,
|
|
-1,
|
|
11,
|
|
2,
|
|
1,
|
|
11,
|
|
1,
|
|
7,
|
|
10,
|
|
6,
|
|
1,
|
|
6,
|
|
7,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
9,
|
|
6,
|
|
8,
|
|
6,
|
|
7,
|
|
9,
|
|
1,
|
|
6,
|
|
11,
|
|
6,
|
|
3,
|
|
1,
|
|
3,
|
|
6,
|
|
-1,
|
|
0,
|
|
9,
|
|
1,
|
|
11,
|
|
6,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
8,
|
|
0,
|
|
7,
|
|
0,
|
|
6,
|
|
3,
|
|
11,
|
|
0,
|
|
11,
|
|
6,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
11,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
6,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
0,
|
|
8,
|
|
11,
|
|
7,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
1,
|
|
9,
|
|
11,
|
|
7,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
1,
|
|
9,
|
|
8,
|
|
3,
|
|
1,
|
|
11,
|
|
7,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
1,
|
|
2,
|
|
6,
|
|
11,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
2,
|
|
10,
|
|
3,
|
|
0,
|
|
8,
|
|
6,
|
|
11,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
9,
|
|
0,
|
|
2,
|
|
10,
|
|
9,
|
|
6,
|
|
11,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
11,
|
|
7,
|
|
2,
|
|
10,
|
|
3,
|
|
10,
|
|
8,
|
|
3,
|
|
10,
|
|
9,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
2,
|
|
3,
|
|
6,
|
|
2,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
0,
|
|
8,
|
|
7,
|
|
6,
|
|
0,
|
|
6,
|
|
2,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
7,
|
|
6,
|
|
2,
|
|
3,
|
|
7,
|
|
0,
|
|
1,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
6,
|
|
2,
|
|
1,
|
|
8,
|
|
6,
|
|
1,
|
|
9,
|
|
8,
|
|
8,
|
|
7,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
7,
|
|
6,
|
|
10,
|
|
1,
|
|
7,
|
|
1,
|
|
3,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
7,
|
|
6,
|
|
1,
|
|
7,
|
|
10,
|
|
1,
|
|
8,
|
|
7,
|
|
1,
|
|
0,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
3,
|
|
7,
|
|
0,
|
|
7,
|
|
10,
|
|
0,
|
|
10,
|
|
9,
|
|
6,
|
|
10,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
6,
|
|
10,
|
|
7,
|
|
10,
|
|
8,
|
|
8,
|
|
10,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
8,
|
|
4,
|
|
11,
|
|
8,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
6,
|
|
11,
|
|
3,
|
|
0,
|
|
6,
|
|
0,
|
|
4,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
6,
|
|
11,
|
|
8,
|
|
4,
|
|
6,
|
|
9,
|
|
0,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
4,
|
|
6,
|
|
9,
|
|
6,
|
|
3,
|
|
9,
|
|
3,
|
|
1,
|
|
11,
|
|
3,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
8,
|
|
4,
|
|
6,
|
|
11,
|
|
8,
|
|
2,
|
|
10,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
2,
|
|
10,
|
|
3,
|
|
0,
|
|
11,
|
|
0,
|
|
6,
|
|
11,
|
|
0,
|
|
4,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
11,
|
|
8,
|
|
4,
|
|
6,
|
|
11,
|
|
0,
|
|
2,
|
|
9,
|
|
2,
|
|
10,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
9,
|
|
3,
|
|
10,
|
|
3,
|
|
2,
|
|
9,
|
|
4,
|
|
3,
|
|
11,
|
|
3,
|
|
6,
|
|
4,
|
|
6,
|
|
3,
|
|
-1,
|
|
8,
|
|
2,
|
|
3,
|
|
8,
|
|
4,
|
|
2,
|
|
4,
|
|
6,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
4,
|
|
2,
|
|
4,
|
|
6,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
9,
|
|
0,
|
|
2,
|
|
3,
|
|
4,
|
|
2,
|
|
4,
|
|
6,
|
|
4,
|
|
3,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
9,
|
|
4,
|
|
1,
|
|
4,
|
|
2,
|
|
2,
|
|
4,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
1,
|
|
3,
|
|
8,
|
|
6,
|
|
1,
|
|
8,
|
|
4,
|
|
6,
|
|
6,
|
|
10,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
1,
|
|
0,
|
|
10,
|
|
0,
|
|
6,
|
|
6,
|
|
0,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
6,
|
|
3,
|
|
4,
|
|
3,
|
|
8,
|
|
6,
|
|
10,
|
|
3,
|
|
0,
|
|
3,
|
|
9,
|
|
10,
|
|
9,
|
|
3,
|
|
-1,
|
|
10,
|
|
9,
|
|
4,
|
|
6,
|
|
10,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
9,
|
|
5,
|
|
7,
|
|
6,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
8,
|
|
3,
|
|
4,
|
|
9,
|
|
5,
|
|
11,
|
|
7,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
0,
|
|
1,
|
|
5,
|
|
4,
|
|
0,
|
|
7,
|
|
6,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
11,
|
|
7,
|
|
6,
|
|
8,
|
|
3,
|
|
4,
|
|
3,
|
|
5,
|
|
4,
|
|
3,
|
|
1,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
5,
|
|
4,
|
|
10,
|
|
1,
|
|
2,
|
|
7,
|
|
6,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
11,
|
|
7,
|
|
1,
|
|
2,
|
|
10,
|
|
0,
|
|
8,
|
|
3,
|
|
4,
|
|
9,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
6,
|
|
11,
|
|
5,
|
|
4,
|
|
10,
|
|
4,
|
|
2,
|
|
10,
|
|
4,
|
|
0,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
4,
|
|
8,
|
|
3,
|
|
5,
|
|
4,
|
|
3,
|
|
2,
|
|
5,
|
|
10,
|
|
5,
|
|
2,
|
|
11,
|
|
7,
|
|
6,
|
|
-1,
|
|
7,
|
|
2,
|
|
3,
|
|
7,
|
|
6,
|
|
2,
|
|
5,
|
|
4,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
5,
|
|
4,
|
|
0,
|
|
8,
|
|
6,
|
|
0,
|
|
6,
|
|
2,
|
|
6,
|
|
8,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
6,
|
|
2,
|
|
3,
|
|
7,
|
|
6,
|
|
1,
|
|
5,
|
|
0,
|
|
5,
|
|
4,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
2,
|
|
8,
|
|
6,
|
|
8,
|
|
7,
|
|
2,
|
|
1,
|
|
8,
|
|
4,
|
|
8,
|
|
5,
|
|
1,
|
|
5,
|
|
8,
|
|
-1,
|
|
9,
|
|
5,
|
|
4,
|
|
10,
|
|
1,
|
|
6,
|
|
1,
|
|
7,
|
|
6,
|
|
1,
|
|
3,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
6,
|
|
10,
|
|
1,
|
|
7,
|
|
6,
|
|
1,
|
|
0,
|
|
7,
|
|
8,
|
|
7,
|
|
0,
|
|
9,
|
|
5,
|
|
4,
|
|
-1,
|
|
4,
|
|
0,
|
|
10,
|
|
4,
|
|
10,
|
|
5,
|
|
0,
|
|
3,
|
|
10,
|
|
6,
|
|
10,
|
|
7,
|
|
3,
|
|
7,
|
|
10,
|
|
-1,
|
|
7,
|
|
6,
|
|
10,
|
|
7,
|
|
10,
|
|
8,
|
|
5,
|
|
4,
|
|
10,
|
|
4,
|
|
8,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
9,
|
|
5,
|
|
6,
|
|
11,
|
|
9,
|
|
11,
|
|
8,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
6,
|
|
11,
|
|
0,
|
|
6,
|
|
3,
|
|
0,
|
|
5,
|
|
6,
|
|
0,
|
|
9,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
11,
|
|
8,
|
|
0,
|
|
5,
|
|
11,
|
|
0,
|
|
1,
|
|
5,
|
|
5,
|
|
6,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
6,
|
|
11,
|
|
3,
|
|
6,
|
|
3,
|
|
5,
|
|
5,
|
|
3,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
2,
|
|
10,
|
|
9,
|
|
5,
|
|
11,
|
|
9,
|
|
11,
|
|
8,
|
|
11,
|
|
5,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
11,
|
|
3,
|
|
0,
|
|
6,
|
|
11,
|
|
0,
|
|
9,
|
|
6,
|
|
5,
|
|
6,
|
|
9,
|
|
1,
|
|
2,
|
|
10,
|
|
-1,
|
|
11,
|
|
8,
|
|
5,
|
|
11,
|
|
5,
|
|
6,
|
|
8,
|
|
0,
|
|
5,
|
|
10,
|
|
5,
|
|
2,
|
|
0,
|
|
2,
|
|
5,
|
|
-1,
|
|
6,
|
|
11,
|
|
3,
|
|
6,
|
|
3,
|
|
5,
|
|
2,
|
|
10,
|
|
3,
|
|
10,
|
|
5,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
8,
|
|
9,
|
|
5,
|
|
2,
|
|
8,
|
|
5,
|
|
6,
|
|
2,
|
|
3,
|
|
8,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
5,
|
|
6,
|
|
9,
|
|
6,
|
|
0,
|
|
0,
|
|
6,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
5,
|
|
8,
|
|
1,
|
|
8,
|
|
0,
|
|
5,
|
|
6,
|
|
8,
|
|
3,
|
|
8,
|
|
2,
|
|
6,
|
|
2,
|
|
8,
|
|
-1,
|
|
1,
|
|
5,
|
|
6,
|
|
2,
|
|
1,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
3,
|
|
6,
|
|
1,
|
|
6,
|
|
10,
|
|
3,
|
|
8,
|
|
6,
|
|
5,
|
|
6,
|
|
9,
|
|
8,
|
|
9,
|
|
6,
|
|
-1,
|
|
10,
|
|
1,
|
|
0,
|
|
10,
|
|
0,
|
|
6,
|
|
9,
|
|
5,
|
|
0,
|
|
5,
|
|
6,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
3,
|
|
8,
|
|
5,
|
|
6,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
5,
|
|
6,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
11,
|
|
5,
|
|
10,
|
|
7,
|
|
5,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
11,
|
|
5,
|
|
10,
|
|
11,
|
|
7,
|
|
5,
|
|
8,
|
|
3,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
11,
|
|
7,
|
|
5,
|
|
10,
|
|
11,
|
|
1,
|
|
9,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
7,
|
|
5,
|
|
10,
|
|
11,
|
|
7,
|
|
9,
|
|
8,
|
|
1,
|
|
8,
|
|
3,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
11,
|
|
1,
|
|
2,
|
|
11,
|
|
7,
|
|
1,
|
|
7,
|
|
5,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
8,
|
|
3,
|
|
1,
|
|
2,
|
|
7,
|
|
1,
|
|
7,
|
|
5,
|
|
7,
|
|
2,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
7,
|
|
5,
|
|
9,
|
|
2,
|
|
7,
|
|
9,
|
|
0,
|
|
2,
|
|
2,
|
|
11,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
7,
|
|
5,
|
|
2,
|
|
7,
|
|
2,
|
|
11,
|
|
5,
|
|
9,
|
|
2,
|
|
3,
|
|
2,
|
|
8,
|
|
9,
|
|
8,
|
|
2,
|
|
-1,
|
|
2,
|
|
5,
|
|
10,
|
|
2,
|
|
3,
|
|
5,
|
|
3,
|
|
7,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
2,
|
|
0,
|
|
8,
|
|
5,
|
|
2,
|
|
8,
|
|
7,
|
|
5,
|
|
10,
|
|
2,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
0,
|
|
1,
|
|
5,
|
|
10,
|
|
3,
|
|
5,
|
|
3,
|
|
7,
|
|
3,
|
|
10,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
8,
|
|
2,
|
|
9,
|
|
2,
|
|
1,
|
|
8,
|
|
7,
|
|
2,
|
|
10,
|
|
2,
|
|
5,
|
|
7,
|
|
5,
|
|
2,
|
|
-1,
|
|
1,
|
|
3,
|
|
5,
|
|
3,
|
|
7,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
8,
|
|
7,
|
|
0,
|
|
7,
|
|
1,
|
|
1,
|
|
7,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
0,
|
|
3,
|
|
9,
|
|
3,
|
|
5,
|
|
5,
|
|
3,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
8,
|
|
7,
|
|
5,
|
|
9,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
8,
|
|
4,
|
|
5,
|
|
10,
|
|
8,
|
|
10,
|
|
11,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
0,
|
|
4,
|
|
5,
|
|
11,
|
|
0,
|
|
5,
|
|
10,
|
|
11,
|
|
11,
|
|
3,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
1,
|
|
9,
|
|
8,
|
|
4,
|
|
10,
|
|
8,
|
|
10,
|
|
11,
|
|
10,
|
|
4,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
10,
|
|
11,
|
|
4,
|
|
10,
|
|
4,
|
|
5,
|
|
11,
|
|
3,
|
|
4,
|
|
9,
|
|
4,
|
|
1,
|
|
3,
|
|
1,
|
|
4,
|
|
-1,
|
|
2,
|
|
5,
|
|
1,
|
|
2,
|
|
8,
|
|
5,
|
|
2,
|
|
11,
|
|
8,
|
|
4,
|
|
5,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
4,
|
|
11,
|
|
0,
|
|
11,
|
|
3,
|
|
4,
|
|
5,
|
|
11,
|
|
2,
|
|
11,
|
|
1,
|
|
5,
|
|
1,
|
|
11,
|
|
-1,
|
|
0,
|
|
2,
|
|
5,
|
|
0,
|
|
5,
|
|
9,
|
|
2,
|
|
11,
|
|
5,
|
|
4,
|
|
5,
|
|
8,
|
|
11,
|
|
8,
|
|
5,
|
|
-1,
|
|
9,
|
|
4,
|
|
5,
|
|
2,
|
|
11,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
5,
|
|
10,
|
|
3,
|
|
5,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
3,
|
|
8,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
5,
|
|
10,
|
|
2,
|
|
5,
|
|
2,
|
|
4,
|
|
4,
|
|
2,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
10,
|
|
2,
|
|
3,
|
|
5,
|
|
10,
|
|
3,
|
|
8,
|
|
5,
|
|
4,
|
|
5,
|
|
8,
|
|
0,
|
|
1,
|
|
9,
|
|
-1,
|
|
5,
|
|
10,
|
|
2,
|
|
5,
|
|
2,
|
|
4,
|
|
1,
|
|
9,
|
|
2,
|
|
9,
|
|
4,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
4,
|
|
5,
|
|
8,
|
|
5,
|
|
3,
|
|
3,
|
|
5,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
4,
|
|
5,
|
|
1,
|
|
0,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
8,
|
|
4,
|
|
5,
|
|
8,
|
|
5,
|
|
3,
|
|
9,
|
|
0,
|
|
5,
|
|
0,
|
|
3,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
4,
|
|
5,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
11,
|
|
7,
|
|
4,
|
|
9,
|
|
11,
|
|
9,
|
|
10,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
8,
|
|
3,
|
|
4,
|
|
9,
|
|
7,
|
|
9,
|
|
11,
|
|
7,
|
|
9,
|
|
10,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
10,
|
|
11,
|
|
1,
|
|
11,
|
|
4,
|
|
1,
|
|
4,
|
|
0,
|
|
7,
|
|
4,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
1,
|
|
4,
|
|
3,
|
|
4,
|
|
8,
|
|
1,
|
|
10,
|
|
4,
|
|
7,
|
|
4,
|
|
11,
|
|
10,
|
|
11,
|
|
4,
|
|
-1,
|
|
4,
|
|
11,
|
|
7,
|
|
9,
|
|
11,
|
|
4,
|
|
9,
|
|
2,
|
|
11,
|
|
9,
|
|
1,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
7,
|
|
4,
|
|
9,
|
|
11,
|
|
7,
|
|
9,
|
|
1,
|
|
11,
|
|
2,
|
|
11,
|
|
1,
|
|
0,
|
|
8,
|
|
3,
|
|
-1,
|
|
11,
|
|
7,
|
|
4,
|
|
11,
|
|
4,
|
|
2,
|
|
2,
|
|
4,
|
|
0,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
11,
|
|
7,
|
|
4,
|
|
11,
|
|
4,
|
|
2,
|
|
8,
|
|
3,
|
|
4,
|
|
3,
|
|
2,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
9,
|
|
10,
|
|
2,
|
|
7,
|
|
9,
|
|
2,
|
|
3,
|
|
7,
|
|
7,
|
|
4,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
10,
|
|
7,
|
|
9,
|
|
7,
|
|
4,
|
|
10,
|
|
2,
|
|
7,
|
|
8,
|
|
7,
|
|
0,
|
|
2,
|
|
0,
|
|
7,
|
|
-1,
|
|
3,
|
|
7,
|
|
10,
|
|
3,
|
|
10,
|
|
2,
|
|
7,
|
|
4,
|
|
10,
|
|
1,
|
|
10,
|
|
0,
|
|
4,
|
|
0,
|
|
10,
|
|
-1,
|
|
1,
|
|
10,
|
|
2,
|
|
8,
|
|
7,
|
|
4,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
9,
|
|
1,
|
|
4,
|
|
1,
|
|
7,
|
|
7,
|
|
1,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
9,
|
|
1,
|
|
4,
|
|
1,
|
|
7,
|
|
0,
|
|
8,
|
|
1,
|
|
8,
|
|
7,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
0,
|
|
3,
|
|
7,
|
|
4,
|
|
3,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
4,
|
|
8,
|
|
7,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
10,
|
|
8,
|
|
10,
|
|
11,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
0,
|
|
9,
|
|
3,
|
|
9,
|
|
11,
|
|
11,
|
|
9,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
1,
|
|
10,
|
|
0,
|
|
10,
|
|
8,
|
|
8,
|
|
10,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
1,
|
|
10,
|
|
11,
|
|
3,
|
|
10,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
2,
|
|
11,
|
|
1,
|
|
11,
|
|
9,
|
|
9,
|
|
11,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
0,
|
|
9,
|
|
3,
|
|
9,
|
|
11,
|
|
1,
|
|
2,
|
|
9,
|
|
2,
|
|
11,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
2,
|
|
11,
|
|
8,
|
|
0,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
3,
|
|
2,
|
|
11,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
3,
|
|
8,
|
|
2,
|
|
8,
|
|
10,
|
|
10,
|
|
8,
|
|
9,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
9,
|
|
10,
|
|
2,
|
|
0,
|
|
9,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
2,
|
|
3,
|
|
8,
|
|
2,
|
|
8,
|
|
10,
|
|
0,
|
|
1,
|
|
8,
|
|
1,
|
|
10,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
10,
|
|
2,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
1,
|
|
3,
|
|
8,
|
|
9,
|
|
1,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
9,
|
|
1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
3,
|
|
8,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1
|
|
]);
|
|
export {
|
|
MarchingCubes,
|
|
edgeTable,
|
|
triTable
|
|
};
|
|
//# sourceMappingURL=MarchingCubes.js.map
|