mirror of
https://github.com/aicodix/code.git
synced 2026-04-27 22:35:44 +00:00
374 lines
34 KiB
C++
374 lines
34 KiB
C++
/*
|
|
Soft decoder for Simplex codes
|
|
|
|
Copyright 2020 Ahmet Inan <inan@aicodix.de>
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
namespace CODE {
|
|
|
|
template <int K>
|
|
class SimplexDecoder
|
|
{
|
|
static const int W = 1 << K;
|
|
static const int N = (1 << K) - 1;
|
|
int8_t mod[W*N];
|
|
|
|
static bool parity(unsigned x)
|
|
{
|
|
x ^= x >> 16;
|
|
x ^= x >> 8;
|
|
x ^= x >> 4;
|
|
x ^= x >> 2;
|
|
x ^= x >> 1;
|
|
return x & 1;
|
|
}
|
|
public:
|
|
SimplexDecoder()
|
|
{
|
|
for (int msg = 0; msg < W; ++msg)
|
|
for (int i = 0; i < N; ++i)
|
|
mod[msg*N+i] = 1 - 2 * parity(msg&(i+1));
|
|
}
|
|
int operator()(const int8_t *code)
|
|
{
|
|
int word = 0, best = 0, next = 0;
|
|
for (int msg = 0; msg < W; ++msg) {
|
|
int sum = 0;
|
|
for (int i = 0; i < N; ++i)
|
|
sum += mod[msg*N+i] * code[i];
|
|
if (sum > best) {
|
|
next = best;
|
|
best = sum;
|
|
word = msg;
|
|
} else if (sum > next) {
|
|
next = sum;
|
|
}
|
|
}
|
|
if (best == next)
|
|
return -1;
|
|
return word;
|
|
}
|
|
};
|
|
|
|
template <>
|
|
class SimplexDecoder<2>
|
|
{
|
|
static const int K = 2;
|
|
static const int W = 1 << K;
|
|
public:
|
|
int operator()(const int8_t *code)
|
|
{
|
|
int sum[W] = {
|
|
+ code[0] + code[1] + code[2],
|
|
- code[0] + code[1] - code[2],
|
|
+ code[0] - code[1] - code[2],
|
|
- code[0] - code[1] + code[2],
|
|
};
|
|
int word = 0, best = 0, next = 0;
|
|
for (int msg = 0 ; msg < W; ++msg) {
|
|
if (sum[msg] > best) {
|
|
next = best;
|
|
best = sum[msg];
|
|
word = msg;
|
|
} else if (sum[msg] > next) {
|
|
next = sum[msg];
|
|
}
|
|
}
|
|
if (best == next)
|
|
return -1;
|
|
return word;
|
|
}
|
|
};
|
|
|
|
template <>
|
|
class SimplexDecoder<3>
|
|
{
|
|
static const int K = 3;
|
|
static const int W = 1 << K;
|
|
public:
|
|
int operator()(const int8_t *code)
|
|
{
|
|
int sum[W] = {
|
|
+ code[0] + code[1] + code[2] + code[3] + code[4] + code[5] + code[6],
|
|
- code[0] + code[1] - code[2] + code[3] - code[4] + code[5] - code[6],
|
|
+ code[0] - code[1] - code[2] + code[3] + code[4] - code[5] - code[6],
|
|
- code[0] - code[1] + code[2] + code[3] - code[4] - code[5] + code[6],
|
|
+ code[0] + code[1] + code[2] - code[3] - code[4] - code[5] - code[6],
|
|
- code[0] + code[1] - code[2] - code[3] + code[4] - code[5] + code[6],
|
|
+ code[0] - code[1] - code[2] - code[3] - code[4] + code[5] + code[6],
|
|
- code[0] - code[1] + code[2] - code[3] + code[4] + code[5] - code[6],
|
|
};
|
|
int word = 0, best = 0, next = 0;
|
|
for (int msg = 0 ; msg < W; ++msg) {
|
|
if (sum[msg] > best) {
|
|
next = best;
|
|
best = sum[msg];
|
|
word = msg;
|
|
} else if (sum[msg] > next) {
|
|
next = sum[msg];
|
|
}
|
|
}
|
|
if (best == next)
|
|
return -1;
|
|
return word;
|
|
}
|
|
};
|
|
|
|
template <>
|
|
class SimplexDecoder<4>
|
|
{
|
|
static const int K = 4;
|
|
static const int W = 1 << K;
|
|
public:
|
|
int operator()(const int8_t *c)
|
|
{
|
|
int sum[W] = {
|
|
+ c[0] + c[1] + c[2] + c[3] + c[4] + c[5] + c[6] + c[7] + c[8] + c[9] + c[10] + c[11] + c[12] + c[13] + c[14],
|
|
- c[0] + c[1] - c[2] + c[3] - c[4] + c[5] - c[6] + c[7] - c[8] + c[9] - c[10] + c[11] - c[12] + c[13] - c[14],
|
|
+ c[0] - c[1] - c[2] + c[3] + c[4] - c[5] - c[6] + c[7] + c[8] - c[9] - c[10] + c[11] + c[12] - c[13] - c[14],
|
|
- c[0] - c[1] + c[2] + c[3] - c[4] - c[5] + c[6] + c[7] - c[8] - c[9] + c[10] + c[11] - c[12] - c[13] + c[14],
|
|
+ c[0] + c[1] + c[2] - c[3] - c[4] - c[5] - c[6] + c[7] + c[8] + c[9] + c[10] - c[11] - c[12] - c[13] - c[14],
|
|
- c[0] + c[1] - c[2] - c[3] + c[4] - c[5] + c[6] + c[7] - c[8] + c[9] - c[10] - c[11] + c[12] - c[13] + c[14],
|
|
+ c[0] - c[1] - c[2] - c[3] - c[4] + c[5] + c[6] + c[7] + c[8] - c[9] - c[10] - c[11] - c[12] + c[13] + c[14],
|
|
- c[0] - c[1] + c[2] - c[3] + c[4] + c[5] - c[6] + c[7] - c[8] - c[9] + c[10] - c[11] + c[12] + c[13] - c[14],
|
|
+ c[0] + c[1] + c[2] + c[3] + c[4] + c[5] + c[6] - c[7] - c[8] - c[9] - c[10] - c[11] - c[12] - c[13] - c[14],
|
|
- c[0] + c[1] - c[2] + c[3] - c[4] + c[5] - c[6] - c[7] + c[8] - c[9] + c[10] - c[11] + c[12] - c[13] + c[14],
|
|
+ c[0] - c[1] - c[2] + c[3] + c[4] - c[5] - c[6] - c[7] - c[8] + c[9] + c[10] - c[11] - c[12] + c[13] + c[14],
|
|
- c[0] - c[1] + c[2] + c[3] - c[4] - c[5] + c[6] - c[7] + c[8] + c[9] - c[10] - c[11] + c[12] + c[13] - c[14],
|
|
+ c[0] + c[1] + c[2] - c[3] - c[4] - c[5] - c[6] - c[7] - c[8] - c[9] - c[10] + c[11] + c[12] + c[13] + c[14],
|
|
- c[0] + c[1] - c[2] - c[3] + c[4] - c[5] + c[6] - c[7] + c[8] - c[9] + c[10] + c[11] - c[12] + c[13] - c[14],
|
|
+ c[0] - c[1] - c[2] - c[3] - c[4] + c[5] + c[6] - c[7] - c[8] + c[9] + c[10] + c[11] + c[12] - c[13] - c[14],
|
|
- c[0] - c[1] + c[2] - c[3] + c[4] + c[5] - c[6] - c[7] + c[8] + c[9] - c[10] + c[11] - c[12] - c[13] + c[14],
|
|
};
|
|
int word = 0, best = 0, next = 0;
|
|
for (int msg = 0 ; msg < W; ++msg) {
|
|
if (sum[msg] > best) {
|
|
next = best;
|
|
best = sum[msg];
|
|
word = msg;
|
|
} else if (sum[msg] > next) {
|
|
next = sum[msg];
|
|
}
|
|
}
|
|
if (best == next)
|
|
return -1;
|
|
return word;
|
|
}
|
|
};
|
|
|
|
template <>
|
|
class SimplexDecoder<5>
|
|
{
|
|
static const int K = 5;
|
|
static const int W = 1 << K;
|
|
public:
|
|
int operator()(const int8_t *c)
|
|
{
|
|
int sum[W] = {
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]+c[10]+c[11]+c[12]+c[13]+c[14]+c[15]+c[16]+c[17]+c[18]+c[19]+c[20]+c[21]+c[22]+c[23]+c[24]+c[25]+c[26]+c[27]+c[28]+c[29]+c[30],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]+c[7]-c[8]+c[9]-c[10]+c[11]-c[12]+c[13]-c[14]+c[15]-c[16]+c[17]-c[18]+c[19]-c[20]+c[21]-c[22]+c[23]-c[24]+c[25]-c[26]+c[27]-c[28]+c[29]-c[30],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]+c[7]+c[8]-c[9]-c[10]+c[11]+c[12]-c[13]-c[14]+c[15]+c[16]-c[17]-c[18]+c[19]+c[20]-c[21]-c[22]+c[23]+c[24]-c[25]-c[26]+c[27]+c[28]-c[29]-c[30],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]+c[7]-c[8]-c[9]+c[10]+c[11]-c[12]-c[13]+c[14]+c[15]-c[16]-c[17]+c[18]+c[19]-c[20]-c[21]+c[22]+c[23]-c[24]-c[25]+c[26]+c[27]-c[28]-c[29]+c[30],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]+c[7]+c[8]+c[9]+c[10]-c[11]-c[12]-c[13]-c[14]+c[15]+c[16]+c[17]+c[18]-c[19]-c[20]-c[21]-c[22]+c[23]+c[24]+c[25]+c[26]-c[27]-c[28]-c[29]-c[30],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]+c[7]-c[8]+c[9]-c[10]-c[11]+c[12]-c[13]+c[14]+c[15]-c[16]+c[17]-c[18]-c[19]+c[20]-c[21]+c[22]+c[23]-c[24]+c[25]-c[26]-c[27]+c[28]-c[29]+c[30],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]+c[7]+c[8]-c[9]-c[10]-c[11]-c[12]+c[13]+c[14]+c[15]+c[16]-c[17]-c[18]-c[19]-c[20]+c[21]+c[22]+c[23]+c[24]-c[25]-c[26]-c[27]-c[28]+c[29]+c[30],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]+c[7]-c[8]-c[9]+c[10]-c[11]+c[12]+c[13]-c[14]+c[15]-c[16]-c[17]+c[18]-c[19]+c[20]+c[21]-c[22]+c[23]-c[24]-c[25]+c[26]-c[27]+c[28]+c[29]-c[30],
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]-c[7]-c[8]-c[9]-c[10]-c[11]-c[12]-c[13]-c[14]+c[15]+c[16]+c[17]+c[18]+c[19]+c[20]+c[21]+c[22]-c[23]-c[24]-c[25]-c[26]-c[27]-c[28]-c[29]-c[30],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]-c[7]+c[8]-c[9]+c[10]-c[11]+c[12]-c[13]+c[14]+c[15]-c[16]+c[17]-c[18]+c[19]-c[20]+c[21]-c[22]-c[23]+c[24]-c[25]+c[26]-c[27]+c[28]-c[29]+c[30],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]-c[7]-c[8]+c[9]+c[10]-c[11]-c[12]+c[13]+c[14]+c[15]+c[16]-c[17]-c[18]+c[19]+c[20]-c[21]-c[22]-c[23]-c[24]+c[25]+c[26]-c[27]-c[28]+c[29]+c[30],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]-c[7]+c[8]+c[9]-c[10]-c[11]+c[12]+c[13]-c[14]+c[15]-c[16]-c[17]+c[18]+c[19]-c[20]-c[21]+c[22]-c[23]+c[24]+c[25]-c[26]-c[27]+c[28]+c[29]-c[30],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]-c[7]-c[8]-c[9]-c[10]+c[11]+c[12]+c[13]+c[14]+c[15]+c[16]+c[17]+c[18]-c[19]-c[20]-c[21]-c[22]-c[23]-c[24]-c[25]-c[26]+c[27]+c[28]+c[29]+c[30],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]-c[7]+c[8]-c[9]+c[10]+c[11]-c[12]+c[13]-c[14]+c[15]-c[16]+c[17]-c[18]-c[19]+c[20]-c[21]+c[22]-c[23]+c[24]-c[25]+c[26]+c[27]-c[28]+c[29]-c[30],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]-c[7]-c[8]+c[9]+c[10]+c[11]+c[12]-c[13]-c[14]+c[15]+c[16]-c[17]-c[18]-c[19]-c[20]+c[21]+c[22]-c[23]-c[24]+c[25]+c[26]+c[27]+c[28]-c[29]-c[30],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]-c[7]+c[8]+c[9]-c[10]+c[11]-c[12]-c[13]+c[14]+c[15]-c[16]-c[17]+c[18]-c[19]+c[20]+c[21]-c[22]-c[23]+c[24]+c[25]-c[26]+c[27]-c[28]-c[29]+c[30],
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]+c[10]+c[11]+c[12]+c[13]+c[14]-c[15]-c[16]-c[17]-c[18]-c[19]-c[20]-c[21]-c[22]-c[23]-c[24]-c[25]-c[26]-c[27]-c[28]-c[29]-c[30],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]+c[7]-c[8]+c[9]-c[10]+c[11]-c[12]+c[13]-c[14]-c[15]+c[16]-c[17]+c[18]-c[19]+c[20]-c[21]+c[22]-c[23]+c[24]-c[25]+c[26]-c[27]+c[28]-c[29]+c[30],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]+c[7]+c[8]-c[9]-c[10]+c[11]+c[12]-c[13]-c[14]-c[15]-c[16]+c[17]+c[18]-c[19]-c[20]+c[21]+c[22]-c[23]-c[24]+c[25]+c[26]-c[27]-c[28]+c[29]+c[30],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]+c[7]-c[8]-c[9]+c[10]+c[11]-c[12]-c[13]+c[14]-c[15]+c[16]+c[17]-c[18]-c[19]+c[20]+c[21]-c[22]-c[23]+c[24]+c[25]-c[26]-c[27]+c[28]+c[29]-c[30],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]+c[7]+c[8]+c[9]+c[10]-c[11]-c[12]-c[13]-c[14]-c[15]-c[16]-c[17]-c[18]+c[19]+c[20]+c[21]+c[22]-c[23]-c[24]-c[25]-c[26]+c[27]+c[28]+c[29]+c[30],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]+c[7]-c[8]+c[9]-c[10]-c[11]+c[12]-c[13]+c[14]-c[15]+c[16]-c[17]+c[18]+c[19]-c[20]+c[21]-c[22]-c[23]+c[24]-c[25]+c[26]+c[27]-c[28]+c[29]-c[30],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]+c[7]+c[8]-c[9]-c[10]-c[11]-c[12]+c[13]+c[14]-c[15]-c[16]+c[17]+c[18]+c[19]+c[20]-c[21]-c[22]-c[23]-c[24]+c[25]+c[26]+c[27]+c[28]-c[29]-c[30],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]+c[7]-c[8]-c[9]+c[10]-c[11]+c[12]+c[13]-c[14]-c[15]+c[16]+c[17]-c[18]+c[19]-c[20]-c[21]+c[22]-c[23]+c[24]+c[25]-c[26]+c[27]-c[28]-c[29]+c[30],
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]-c[7]-c[8]-c[9]-c[10]-c[11]-c[12]-c[13]-c[14]-c[15]-c[16]-c[17]-c[18]-c[19]-c[20]-c[21]-c[22]+c[23]+c[24]+c[25]+c[26]+c[27]+c[28]+c[29]+c[30],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]-c[7]+c[8]-c[9]+c[10]-c[11]+c[12]-c[13]+c[14]-c[15]+c[16]-c[17]+c[18]-c[19]+c[20]-c[21]+c[22]+c[23]-c[24]+c[25]-c[26]+c[27]-c[28]+c[29]-c[30],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]-c[7]-c[8]+c[9]+c[10]-c[11]-c[12]+c[13]+c[14]-c[15]-c[16]+c[17]+c[18]-c[19]-c[20]+c[21]+c[22]+c[23]+c[24]-c[25]-c[26]+c[27]+c[28]-c[29]-c[30],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]-c[7]+c[8]+c[9]-c[10]-c[11]+c[12]+c[13]-c[14]-c[15]+c[16]+c[17]-c[18]-c[19]+c[20]+c[21]-c[22]+c[23]-c[24]-c[25]+c[26]+c[27]-c[28]-c[29]+c[30],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]-c[7]-c[8]-c[9]-c[10]+c[11]+c[12]+c[13]+c[14]-c[15]-c[16]-c[17]-c[18]+c[19]+c[20]+c[21]+c[22]+c[23]+c[24]+c[25]+c[26]-c[27]-c[28]-c[29]-c[30],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]-c[7]+c[8]-c[9]+c[10]+c[11]-c[12]+c[13]-c[14]-c[15]+c[16]-c[17]+c[18]+c[19]-c[20]+c[21]-c[22]+c[23]-c[24]+c[25]-c[26]-c[27]+c[28]-c[29]+c[30],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]-c[7]-c[8]+c[9]+c[10]+c[11]+c[12]-c[13]-c[14]-c[15]-c[16]+c[17]+c[18]+c[19]+c[20]-c[21]-c[22]+c[23]+c[24]-c[25]-c[26]-c[27]-c[28]+c[29]+c[30],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]-c[7]+c[8]+c[9]-c[10]+c[11]-c[12]-c[13]+c[14]-c[15]+c[16]+c[17]-c[18]+c[19]-c[20]-c[21]+c[22]+c[23]-c[24]-c[25]+c[26]-c[27]+c[28]+c[29]-c[30],
|
|
};
|
|
int word = 0, best = 0, next = 0;
|
|
for (int msg = 0 ; msg < W; ++msg) {
|
|
if (sum[msg] > best) {
|
|
next = best;
|
|
best = sum[msg];
|
|
word = msg;
|
|
} else if (sum[msg] > next) {
|
|
next = sum[msg];
|
|
}
|
|
}
|
|
if (best == next)
|
|
return -1;
|
|
return word;
|
|
}
|
|
};
|
|
|
|
template <>
|
|
class SimplexDecoder<6>
|
|
{
|
|
static const int K = 6;
|
|
static const int W = 1 << K;
|
|
public:
|
|
int operator()(const int8_t *c)
|
|
{
|
|
int sum[W] = {
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]+c[10]+c[11]+c[12]+c[13]+c[14]+c[15]+c[16]+c[17]+c[18]+c[19]+c[20]+c[21]+c[22]+c[23]+c[24]+c[25]+c[26]+c[27]+c[28]+c[29]+c[30]+c[31]+c[32]
|
|
+c[33]+c[34]+c[35]+c[36]+c[37]+c[38]+c[39]+c[40]+c[41]+c[42]+c[43]+c[44]+c[45]+c[46]+c[47]+c[48]+c[49]+c[50]+c[51]+c[52]+c[53]+c[54]+c[55]+c[56]+c[57]+c[58]+c[59]+c[60]+c[61]+c[62],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]+c[7]-c[8]+c[9]-c[10]+c[11]-c[12]+c[13]-c[14]+c[15]-c[16]+c[17]-c[18]+c[19]-c[20]+c[21]-c[22]+c[23]-c[24]+c[25]-c[26]+c[27]-c[28]+c[29]-c[30]+c[31]-c[32]
|
|
+c[33]-c[34]+c[35]-c[36]+c[37]-c[38]+c[39]-c[40]+c[41]-c[42]+c[43]-c[44]+c[45]-c[46]+c[47]-c[48]+c[49]-c[50]+c[51]-c[52]+c[53]-c[54]+c[55]-c[56]+c[57]-c[58]+c[59]-c[60]+c[61]-c[62],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]+c[7]+c[8]-c[9]-c[10]+c[11]+c[12]-c[13]-c[14]+c[15]+c[16]-c[17]-c[18]+c[19]+c[20]-c[21]-c[22]+c[23]+c[24]-c[25]-c[26]+c[27]+c[28]-c[29]-c[30]+c[31]+c[32]
|
|
-c[33]-c[34]+c[35]+c[36]-c[37]-c[38]+c[39]+c[40]-c[41]-c[42]+c[43]+c[44]-c[45]-c[46]+c[47]+c[48]-c[49]-c[50]+c[51]+c[52]-c[53]-c[54]+c[55]+c[56]-c[57]-c[58]+c[59]+c[60]-c[61]-c[62],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]+c[7]-c[8]-c[9]+c[10]+c[11]-c[12]-c[13]+c[14]+c[15]-c[16]-c[17]+c[18]+c[19]-c[20]-c[21]+c[22]+c[23]-c[24]-c[25]+c[26]+c[27]-c[28]-c[29]+c[30]+c[31]-c[32]
|
|
-c[33]+c[34]+c[35]-c[36]-c[37]+c[38]+c[39]-c[40]-c[41]+c[42]+c[43]-c[44]-c[45]+c[46]+c[47]-c[48]-c[49]+c[50]+c[51]-c[52]-c[53]+c[54]+c[55]-c[56]-c[57]+c[58]+c[59]-c[60]-c[61]+c[62],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]+c[7]+c[8]+c[9]+c[10]-c[11]-c[12]-c[13]-c[14]+c[15]+c[16]+c[17]+c[18]-c[19]-c[20]-c[21]-c[22]+c[23]+c[24]+c[25]+c[26]-c[27]-c[28]-c[29]-c[30]+c[31]+c[32]
|
|
+c[33]+c[34]-c[35]-c[36]-c[37]-c[38]+c[39]+c[40]+c[41]+c[42]-c[43]-c[44]-c[45]-c[46]+c[47]+c[48]+c[49]+c[50]-c[51]-c[52]-c[53]-c[54]+c[55]+c[56]+c[57]+c[58]-c[59]-c[60]-c[61]-c[62],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]+c[7]-c[8]+c[9]-c[10]-c[11]+c[12]-c[13]+c[14]+c[15]-c[16]+c[17]-c[18]-c[19]+c[20]-c[21]+c[22]+c[23]-c[24]+c[25]-c[26]-c[27]+c[28]-c[29]+c[30]+c[31]-c[32]
|
|
+c[33]-c[34]-c[35]+c[36]-c[37]+c[38]+c[39]-c[40]+c[41]-c[42]-c[43]+c[44]-c[45]+c[46]+c[47]-c[48]+c[49]-c[50]-c[51]+c[52]-c[53]+c[54]+c[55]-c[56]+c[57]-c[58]-c[59]+c[60]-c[61]+c[62],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]+c[7]+c[8]-c[9]-c[10]-c[11]-c[12]+c[13]+c[14]+c[15]+c[16]-c[17]-c[18]-c[19]-c[20]+c[21]+c[22]+c[23]+c[24]-c[25]-c[26]-c[27]-c[28]+c[29]+c[30]+c[31]+c[32]
|
|
-c[33]-c[34]-c[35]-c[36]+c[37]+c[38]+c[39]+c[40]-c[41]-c[42]-c[43]-c[44]+c[45]+c[46]+c[47]+c[48]-c[49]-c[50]-c[51]-c[52]+c[53]+c[54]+c[55]+c[56]-c[57]-c[58]-c[59]-c[60]+c[61]+c[62],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]+c[7]-c[8]-c[9]+c[10]-c[11]+c[12]+c[13]-c[14]+c[15]-c[16]-c[17]+c[18]-c[19]+c[20]+c[21]-c[22]+c[23]-c[24]-c[25]+c[26]-c[27]+c[28]+c[29]-c[30]+c[31]-c[32]
|
|
-c[33]+c[34]-c[35]+c[36]+c[37]-c[38]+c[39]-c[40]-c[41]+c[42]-c[43]+c[44]+c[45]-c[46]+c[47]-c[48]-c[49]+c[50]-c[51]+c[52]+c[53]-c[54]+c[55]-c[56]-c[57]+c[58]-c[59]+c[60]+c[61]-c[62],
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]-c[7]-c[8]-c[9]-c[10]-c[11]-c[12]-c[13]-c[14]+c[15]+c[16]+c[17]+c[18]+c[19]+c[20]+c[21]+c[22]-c[23]-c[24]-c[25]-c[26]-c[27]-c[28]-c[29]-c[30]+c[31]+c[32]
|
|
+c[33]+c[34]+c[35]+c[36]+c[37]+c[38]-c[39]-c[40]-c[41]-c[42]-c[43]-c[44]-c[45]-c[46]+c[47]+c[48]+c[49]+c[50]+c[51]+c[52]+c[53]+c[54]-c[55]-c[56]-c[57]-c[58]-c[59]-c[60]-c[61]-c[62],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]-c[7]+c[8]-c[9]+c[10]-c[11]+c[12]-c[13]+c[14]+c[15]-c[16]+c[17]-c[18]+c[19]-c[20]+c[21]-c[22]-c[23]+c[24]-c[25]+c[26]-c[27]+c[28]-c[29]+c[30]+c[31]-c[32]
|
|
+c[33]-c[34]+c[35]-c[36]+c[37]-c[38]-c[39]+c[40]-c[41]+c[42]-c[43]+c[44]-c[45]+c[46]+c[47]-c[48]+c[49]-c[50]+c[51]-c[52]+c[53]-c[54]-c[55]+c[56]-c[57]+c[58]-c[59]+c[60]-c[61]+c[62],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]-c[7]-c[8]+c[9]+c[10]-c[11]-c[12]+c[13]+c[14]+c[15]+c[16]-c[17]-c[18]+c[19]+c[20]-c[21]-c[22]-c[23]-c[24]+c[25]+c[26]-c[27]-c[28]+c[29]+c[30]+c[31]+c[32]
|
|
-c[33]-c[34]+c[35]+c[36]-c[37]-c[38]-c[39]-c[40]+c[41]+c[42]-c[43]-c[44]+c[45]+c[46]+c[47]+c[48]-c[49]-c[50]+c[51]+c[52]-c[53]-c[54]-c[55]-c[56]+c[57]+c[58]-c[59]-c[60]+c[61]+c[62],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]-c[7]+c[8]+c[9]-c[10]-c[11]+c[12]+c[13]-c[14]+c[15]-c[16]-c[17]+c[18]+c[19]-c[20]-c[21]+c[22]-c[23]+c[24]+c[25]-c[26]-c[27]+c[28]+c[29]-c[30]+c[31]-c[32]
|
|
-c[33]+c[34]+c[35]-c[36]-c[37]+c[38]-c[39]+c[40]+c[41]-c[42]-c[43]+c[44]+c[45]-c[46]+c[47]-c[48]-c[49]+c[50]+c[51]-c[52]-c[53]+c[54]-c[55]+c[56]+c[57]-c[58]-c[59]+c[60]+c[61]-c[62],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]-c[7]-c[8]-c[9]-c[10]+c[11]+c[12]+c[13]+c[14]+c[15]+c[16]+c[17]+c[18]-c[19]-c[20]-c[21]-c[22]-c[23]-c[24]-c[25]-c[26]+c[27]+c[28]+c[29]+c[30]+c[31]+c[32]
|
|
+c[33]+c[34]-c[35]-c[36]-c[37]-c[38]-c[39]-c[40]-c[41]-c[42]+c[43]+c[44]+c[45]+c[46]+c[47]+c[48]+c[49]+c[50]-c[51]-c[52]-c[53]-c[54]-c[55]-c[56]-c[57]-c[58]+c[59]+c[60]+c[61]+c[62],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]-c[7]+c[8]-c[9]+c[10]+c[11]-c[12]+c[13]-c[14]+c[15]-c[16]+c[17]-c[18]-c[19]+c[20]-c[21]+c[22]-c[23]+c[24]-c[25]+c[26]+c[27]-c[28]+c[29]-c[30]+c[31]-c[32]
|
|
+c[33]-c[34]-c[35]+c[36]-c[37]+c[38]-c[39]+c[40]-c[41]+c[42]+c[43]-c[44]+c[45]-c[46]+c[47]-c[48]+c[49]-c[50]-c[51]+c[52]-c[53]+c[54]-c[55]+c[56]-c[57]+c[58]+c[59]-c[60]+c[61]-c[62],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]-c[7]-c[8]+c[9]+c[10]+c[11]+c[12]-c[13]-c[14]+c[15]+c[16]-c[17]-c[18]-c[19]-c[20]+c[21]+c[22]-c[23]-c[24]+c[25]+c[26]+c[27]+c[28]-c[29]-c[30]+c[31]+c[32]
|
|
-c[33]-c[34]-c[35]-c[36]+c[37]+c[38]-c[39]-c[40]+c[41]+c[42]+c[43]+c[44]-c[45]-c[46]+c[47]+c[48]-c[49]-c[50]-c[51]-c[52]+c[53]+c[54]-c[55]-c[56]+c[57]+c[58]+c[59]+c[60]-c[61]-c[62],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]-c[7]+c[8]+c[9]-c[10]+c[11]-c[12]-c[13]+c[14]+c[15]-c[16]-c[17]+c[18]-c[19]+c[20]+c[21]-c[22]-c[23]+c[24]+c[25]-c[26]+c[27]-c[28]-c[29]+c[30]+c[31]-c[32]
|
|
-c[33]+c[34]-c[35]+c[36]+c[37]-c[38]-c[39]+c[40]+c[41]-c[42]+c[43]-c[44]-c[45]+c[46]+c[47]-c[48]-c[49]+c[50]-c[51]+c[52]+c[53]-c[54]-c[55]+c[56]+c[57]-c[58]+c[59]-c[60]-c[61]+c[62],
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]+c[10]+c[11]+c[12]+c[13]+c[14]-c[15]-c[16]-c[17]-c[18]-c[19]-c[20]-c[21]-c[22]-c[23]-c[24]-c[25]-c[26]-c[27]-c[28]-c[29]-c[30]+c[31]+c[32]
|
|
+c[33]+c[34]+c[35]+c[36]+c[37]+c[38]+c[39]+c[40]+c[41]+c[42]+c[43]+c[44]+c[45]+c[46]-c[47]-c[48]-c[49]-c[50]-c[51]-c[52]-c[53]-c[54]-c[55]-c[56]-c[57]-c[58]-c[59]-c[60]-c[61]-c[62],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]+c[7]-c[8]+c[9]-c[10]+c[11]-c[12]+c[13]-c[14]-c[15]+c[16]-c[17]+c[18]-c[19]+c[20]-c[21]+c[22]-c[23]+c[24]-c[25]+c[26]-c[27]+c[28]-c[29]+c[30]+c[31]-c[32]
|
|
+c[33]-c[34]+c[35]-c[36]+c[37]-c[38]+c[39]-c[40]+c[41]-c[42]+c[43]-c[44]+c[45]-c[46]-c[47]+c[48]-c[49]+c[50]-c[51]+c[52]-c[53]+c[54]-c[55]+c[56]-c[57]+c[58]-c[59]+c[60]-c[61]+c[62],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]+c[7]+c[8]-c[9]-c[10]+c[11]+c[12]-c[13]-c[14]-c[15]-c[16]+c[17]+c[18]-c[19]-c[20]+c[21]+c[22]-c[23]-c[24]+c[25]+c[26]-c[27]-c[28]+c[29]+c[30]+c[31]+c[32]
|
|
-c[33]-c[34]+c[35]+c[36]-c[37]-c[38]+c[39]+c[40]-c[41]-c[42]+c[43]+c[44]-c[45]-c[46]-c[47]-c[48]+c[49]+c[50]-c[51]-c[52]+c[53]+c[54]-c[55]-c[56]+c[57]+c[58]-c[59]-c[60]+c[61]+c[62],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]+c[7]-c[8]-c[9]+c[10]+c[11]-c[12]-c[13]+c[14]-c[15]+c[16]+c[17]-c[18]-c[19]+c[20]+c[21]-c[22]-c[23]+c[24]+c[25]-c[26]-c[27]+c[28]+c[29]-c[30]+c[31]-c[32]
|
|
-c[33]+c[34]+c[35]-c[36]-c[37]+c[38]+c[39]-c[40]-c[41]+c[42]+c[43]-c[44]-c[45]+c[46]-c[47]+c[48]+c[49]-c[50]-c[51]+c[52]+c[53]-c[54]-c[55]+c[56]+c[57]-c[58]-c[59]+c[60]+c[61]-c[62],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]+c[7]+c[8]+c[9]+c[10]-c[11]-c[12]-c[13]-c[14]-c[15]-c[16]-c[17]-c[18]+c[19]+c[20]+c[21]+c[22]-c[23]-c[24]-c[25]-c[26]+c[27]+c[28]+c[29]+c[30]+c[31]+c[32]
|
|
+c[33]+c[34]-c[35]-c[36]-c[37]-c[38]+c[39]+c[40]+c[41]+c[42]-c[43]-c[44]-c[45]-c[46]-c[47]-c[48]-c[49]-c[50]+c[51]+c[52]+c[53]+c[54]-c[55]-c[56]-c[57]-c[58]+c[59]+c[60]+c[61]+c[62],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]+c[7]-c[8]+c[9]-c[10]-c[11]+c[12]-c[13]+c[14]-c[15]+c[16]-c[17]+c[18]+c[19]-c[20]+c[21]-c[22]-c[23]+c[24]-c[25]+c[26]+c[27]-c[28]+c[29]-c[30]+c[31]-c[32]
|
|
+c[33]-c[34]-c[35]+c[36]-c[37]+c[38]+c[39]-c[40]+c[41]-c[42]-c[43]+c[44]-c[45]+c[46]-c[47]+c[48]-c[49]+c[50]+c[51]-c[52]+c[53]-c[54]-c[55]+c[56]-c[57]+c[58]+c[59]-c[60]+c[61]-c[62],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]+c[7]+c[8]-c[9]-c[10]-c[11]-c[12]+c[13]+c[14]-c[15]-c[16]+c[17]+c[18]+c[19]+c[20]-c[21]-c[22]-c[23]-c[24]+c[25]+c[26]+c[27]+c[28]-c[29]-c[30]+c[31]+c[32]
|
|
-c[33]-c[34]-c[35]-c[36]+c[37]+c[38]+c[39]+c[40]-c[41]-c[42]-c[43]-c[44]+c[45]+c[46]-c[47]-c[48]+c[49]+c[50]+c[51]+c[52]-c[53]-c[54]-c[55]-c[56]+c[57]+c[58]+c[59]+c[60]-c[61]-c[62],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]+c[7]-c[8]-c[9]+c[10]-c[11]+c[12]+c[13]-c[14]-c[15]+c[16]+c[17]-c[18]+c[19]-c[20]-c[21]+c[22]-c[23]+c[24]+c[25]-c[26]+c[27]-c[28]-c[29]+c[30]+c[31]-c[32]
|
|
-c[33]+c[34]-c[35]+c[36]+c[37]-c[38]+c[39]-c[40]-c[41]+c[42]-c[43]+c[44]+c[45]-c[46]-c[47]+c[48]+c[49]-c[50]+c[51]-c[52]-c[53]+c[54]-c[55]+c[56]+c[57]-c[58]+c[59]-c[60]-c[61]+c[62],
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]-c[7]-c[8]-c[9]-c[10]-c[11]-c[12]-c[13]-c[14]-c[15]-c[16]-c[17]-c[18]-c[19]-c[20]-c[21]-c[22]+c[23]+c[24]+c[25]+c[26]+c[27]+c[28]+c[29]+c[30]+c[31]+c[32]
|
|
+c[33]+c[34]+c[35]+c[36]+c[37]+c[38]-c[39]-c[40]-c[41]-c[42]-c[43]-c[44]-c[45]-c[46]-c[47]-c[48]-c[49]-c[50]-c[51]-c[52]-c[53]-c[54]+c[55]+c[56]+c[57]+c[58]+c[59]+c[60]+c[61]+c[62],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]-c[7]+c[8]-c[9]+c[10]-c[11]+c[12]-c[13]+c[14]-c[15]+c[16]-c[17]+c[18]-c[19]+c[20]-c[21]+c[22]+c[23]-c[24]+c[25]-c[26]+c[27]-c[28]+c[29]-c[30]+c[31]-c[32]
|
|
+c[33]-c[34]+c[35]-c[36]+c[37]-c[38]-c[39]+c[40]-c[41]+c[42]-c[43]+c[44]-c[45]+c[46]-c[47]+c[48]-c[49]+c[50]-c[51]+c[52]-c[53]+c[54]+c[55]-c[56]+c[57]-c[58]+c[59]-c[60]+c[61]-c[62],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]-c[7]-c[8]+c[9]+c[10]-c[11]-c[12]+c[13]+c[14]-c[15]-c[16]+c[17]+c[18]-c[19]-c[20]+c[21]+c[22]+c[23]+c[24]-c[25]-c[26]+c[27]+c[28]-c[29]-c[30]+c[31]+c[32]
|
|
-c[33]-c[34]+c[35]+c[36]-c[37]-c[38]-c[39]-c[40]+c[41]+c[42]-c[43]-c[44]+c[45]+c[46]-c[47]-c[48]+c[49]+c[50]-c[51]-c[52]+c[53]+c[54]+c[55]+c[56]-c[57]-c[58]+c[59]+c[60]-c[61]-c[62],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]-c[7]+c[8]+c[9]-c[10]-c[11]+c[12]+c[13]-c[14]-c[15]+c[16]+c[17]-c[18]-c[19]+c[20]+c[21]-c[22]+c[23]-c[24]-c[25]+c[26]+c[27]-c[28]-c[29]+c[30]+c[31]-c[32]
|
|
-c[33]+c[34]+c[35]-c[36]-c[37]+c[38]-c[39]+c[40]+c[41]-c[42]-c[43]+c[44]+c[45]-c[46]-c[47]+c[48]+c[49]-c[50]-c[51]+c[52]+c[53]-c[54]+c[55]-c[56]-c[57]+c[58]+c[59]-c[60]-c[61]+c[62],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]-c[7]-c[8]-c[9]-c[10]+c[11]+c[12]+c[13]+c[14]-c[15]-c[16]-c[17]-c[18]+c[19]+c[20]+c[21]+c[22]+c[23]+c[24]+c[25]+c[26]-c[27]-c[28]-c[29]-c[30]+c[31]+c[32]
|
|
+c[33]+c[34]-c[35]-c[36]-c[37]-c[38]-c[39]-c[40]-c[41]-c[42]+c[43]+c[44]+c[45]+c[46]-c[47]-c[48]-c[49]-c[50]+c[51]+c[52]+c[53]+c[54]+c[55]+c[56]+c[57]+c[58]-c[59]-c[60]-c[61]-c[62],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]-c[7]+c[8]-c[9]+c[10]+c[11]-c[12]+c[13]-c[14]-c[15]+c[16]-c[17]+c[18]+c[19]-c[20]+c[21]-c[22]+c[23]-c[24]+c[25]-c[26]-c[27]+c[28]-c[29]+c[30]+c[31]-c[32]
|
|
+c[33]-c[34]-c[35]+c[36]-c[37]+c[38]-c[39]+c[40]-c[41]+c[42]+c[43]-c[44]+c[45]-c[46]-c[47]+c[48]-c[49]+c[50]+c[51]-c[52]+c[53]-c[54]+c[55]-c[56]+c[57]-c[58]-c[59]+c[60]-c[61]+c[62],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]-c[7]-c[8]+c[9]+c[10]+c[11]+c[12]-c[13]-c[14]-c[15]-c[16]+c[17]+c[18]+c[19]+c[20]-c[21]-c[22]+c[23]+c[24]-c[25]-c[26]-c[27]-c[28]+c[29]+c[30]+c[31]+c[32]
|
|
-c[33]-c[34]-c[35]-c[36]+c[37]+c[38]-c[39]-c[40]+c[41]+c[42]+c[43]+c[44]-c[45]-c[46]-c[47]-c[48]+c[49]+c[50]+c[51]+c[52]-c[53]-c[54]+c[55]+c[56]-c[57]-c[58]-c[59]-c[60]+c[61]+c[62],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]-c[7]+c[8]+c[9]-c[10]+c[11]-c[12]-c[13]+c[14]-c[15]+c[16]+c[17]-c[18]+c[19]-c[20]-c[21]+c[22]+c[23]-c[24]-c[25]+c[26]-c[27]+c[28]+c[29]-c[30]+c[31]-c[32]
|
|
-c[33]+c[34]-c[35]+c[36]+c[37]-c[38]-c[39]+c[40]+c[41]-c[42]+c[43]-c[44]-c[45]+c[46]-c[47]+c[48]+c[49]-c[50]+c[51]-c[52]-c[53]+c[54]+c[55]-c[56]-c[57]+c[58]-c[59]+c[60]+c[61]-c[62],
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]+c[10]+c[11]+c[12]+c[13]+c[14]+c[15]+c[16]+c[17]+c[18]+c[19]+c[20]+c[21]+c[22]+c[23]+c[24]+c[25]+c[26]+c[27]+c[28]+c[29]+c[30]-c[31]-c[32]
|
|
-c[33]-c[34]-c[35]-c[36]-c[37]-c[38]-c[39]-c[40]-c[41]-c[42]-c[43]-c[44]-c[45]-c[46]-c[47]-c[48]-c[49]-c[50]-c[51]-c[52]-c[53]-c[54]-c[55]-c[56]-c[57]-c[58]-c[59]-c[60]-c[61]-c[62],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]+c[7]-c[8]+c[9]-c[10]+c[11]-c[12]+c[13]-c[14]+c[15]-c[16]+c[17]-c[18]+c[19]-c[20]+c[21]-c[22]+c[23]-c[24]+c[25]-c[26]+c[27]-c[28]+c[29]-c[30]-c[31]+c[32]
|
|
-c[33]+c[34]-c[35]+c[36]-c[37]+c[38]-c[39]+c[40]-c[41]+c[42]-c[43]+c[44]-c[45]+c[46]-c[47]+c[48]-c[49]+c[50]-c[51]+c[52]-c[53]+c[54]-c[55]+c[56]-c[57]+c[58]-c[59]+c[60]-c[61]+c[62],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]+c[7]+c[8]-c[9]-c[10]+c[11]+c[12]-c[13]-c[14]+c[15]+c[16]-c[17]-c[18]+c[19]+c[20]-c[21]-c[22]+c[23]+c[24]-c[25]-c[26]+c[27]+c[28]-c[29]-c[30]-c[31]-c[32]
|
|
+c[33]+c[34]-c[35]-c[36]+c[37]+c[38]-c[39]-c[40]+c[41]+c[42]-c[43]-c[44]+c[45]+c[46]-c[47]-c[48]+c[49]+c[50]-c[51]-c[52]+c[53]+c[54]-c[55]-c[56]+c[57]+c[58]-c[59]-c[60]+c[61]+c[62],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]+c[7]-c[8]-c[9]+c[10]+c[11]-c[12]-c[13]+c[14]+c[15]-c[16]-c[17]+c[18]+c[19]-c[20]-c[21]+c[22]+c[23]-c[24]-c[25]+c[26]+c[27]-c[28]-c[29]+c[30]-c[31]+c[32]
|
|
+c[33]-c[34]-c[35]+c[36]+c[37]-c[38]-c[39]+c[40]+c[41]-c[42]-c[43]+c[44]+c[45]-c[46]-c[47]+c[48]+c[49]-c[50]-c[51]+c[52]+c[53]-c[54]-c[55]+c[56]+c[57]-c[58]-c[59]+c[60]+c[61]-c[62],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]+c[7]+c[8]+c[9]+c[10]-c[11]-c[12]-c[13]-c[14]+c[15]+c[16]+c[17]+c[18]-c[19]-c[20]-c[21]-c[22]+c[23]+c[24]+c[25]+c[26]-c[27]-c[28]-c[29]-c[30]-c[31]-c[32]
|
|
-c[33]-c[34]+c[35]+c[36]+c[37]+c[38]-c[39]-c[40]-c[41]-c[42]+c[43]+c[44]+c[45]+c[46]-c[47]-c[48]-c[49]-c[50]+c[51]+c[52]+c[53]+c[54]-c[55]-c[56]-c[57]-c[58]+c[59]+c[60]+c[61]+c[62],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]+c[7]-c[8]+c[9]-c[10]-c[11]+c[12]-c[13]+c[14]+c[15]-c[16]+c[17]-c[18]-c[19]+c[20]-c[21]+c[22]+c[23]-c[24]+c[25]-c[26]-c[27]+c[28]-c[29]+c[30]-c[31]+c[32]
|
|
-c[33]+c[34]+c[35]-c[36]+c[37]-c[38]-c[39]+c[40]-c[41]+c[42]+c[43]-c[44]+c[45]-c[46]-c[47]+c[48]-c[49]+c[50]+c[51]-c[52]+c[53]-c[54]-c[55]+c[56]-c[57]+c[58]+c[59]-c[60]+c[61]-c[62],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]+c[7]+c[8]-c[9]-c[10]-c[11]-c[12]+c[13]+c[14]+c[15]+c[16]-c[17]-c[18]-c[19]-c[20]+c[21]+c[22]+c[23]+c[24]-c[25]-c[26]-c[27]-c[28]+c[29]+c[30]-c[31]-c[32]
|
|
+c[33]+c[34]+c[35]+c[36]-c[37]-c[38]-c[39]-c[40]+c[41]+c[42]+c[43]+c[44]-c[45]-c[46]-c[47]-c[48]+c[49]+c[50]+c[51]+c[52]-c[53]-c[54]-c[55]-c[56]+c[57]+c[58]+c[59]+c[60]-c[61]-c[62],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]+c[7]-c[8]-c[9]+c[10]-c[11]+c[12]+c[13]-c[14]+c[15]-c[16]-c[17]+c[18]-c[19]+c[20]+c[21]-c[22]+c[23]-c[24]-c[25]+c[26]-c[27]+c[28]+c[29]-c[30]-c[31]+c[32]
|
|
+c[33]-c[34]+c[35]-c[36]-c[37]+c[38]-c[39]+c[40]+c[41]-c[42]+c[43]-c[44]-c[45]+c[46]-c[47]+c[48]+c[49]-c[50]+c[51]-c[52]-c[53]+c[54]-c[55]+c[56]+c[57]-c[58]+c[59]-c[60]-c[61]+c[62],
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]-c[7]-c[8]-c[9]-c[10]-c[11]-c[12]-c[13]-c[14]+c[15]+c[16]+c[17]+c[18]+c[19]+c[20]+c[21]+c[22]-c[23]-c[24]-c[25]-c[26]-c[27]-c[28]-c[29]-c[30]-c[31]-c[32]
|
|
-c[33]-c[34]-c[35]-c[36]-c[37]-c[38]+c[39]+c[40]+c[41]+c[42]+c[43]+c[44]+c[45]+c[46]-c[47]-c[48]-c[49]-c[50]-c[51]-c[52]-c[53]-c[54]+c[55]+c[56]+c[57]+c[58]+c[59]+c[60]+c[61]+c[62],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]-c[7]+c[8]-c[9]+c[10]-c[11]+c[12]-c[13]+c[14]+c[15]-c[16]+c[17]-c[18]+c[19]-c[20]+c[21]-c[22]-c[23]+c[24]-c[25]+c[26]-c[27]+c[28]-c[29]+c[30]-c[31]+c[32]
|
|
-c[33]+c[34]-c[35]+c[36]-c[37]+c[38]+c[39]-c[40]+c[41]-c[42]+c[43]-c[44]+c[45]-c[46]-c[47]+c[48]-c[49]+c[50]-c[51]+c[52]-c[53]+c[54]+c[55]-c[56]+c[57]-c[58]+c[59]-c[60]+c[61]-c[62],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]-c[7]-c[8]+c[9]+c[10]-c[11]-c[12]+c[13]+c[14]+c[15]+c[16]-c[17]-c[18]+c[19]+c[20]-c[21]-c[22]-c[23]-c[24]+c[25]+c[26]-c[27]-c[28]+c[29]+c[30]-c[31]-c[32]
|
|
+c[33]+c[34]-c[35]-c[36]+c[37]+c[38]+c[39]+c[40]-c[41]-c[42]+c[43]+c[44]-c[45]-c[46]-c[47]-c[48]+c[49]+c[50]-c[51]-c[52]+c[53]+c[54]+c[55]+c[56]-c[57]-c[58]+c[59]+c[60]-c[61]-c[62],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]-c[7]+c[8]+c[9]-c[10]-c[11]+c[12]+c[13]-c[14]+c[15]-c[16]-c[17]+c[18]+c[19]-c[20]-c[21]+c[22]-c[23]+c[24]+c[25]-c[26]-c[27]+c[28]+c[29]-c[30]-c[31]+c[32]
|
|
+c[33]-c[34]-c[35]+c[36]+c[37]-c[38]+c[39]-c[40]-c[41]+c[42]+c[43]-c[44]-c[45]+c[46]-c[47]+c[48]+c[49]-c[50]-c[51]+c[52]+c[53]-c[54]+c[55]-c[56]-c[57]+c[58]+c[59]-c[60]-c[61]+c[62],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]-c[7]-c[8]-c[9]-c[10]+c[11]+c[12]+c[13]+c[14]+c[15]+c[16]+c[17]+c[18]-c[19]-c[20]-c[21]-c[22]-c[23]-c[24]-c[25]-c[26]+c[27]+c[28]+c[29]+c[30]-c[31]-c[32]
|
|
-c[33]-c[34]+c[35]+c[36]+c[37]+c[38]+c[39]+c[40]+c[41]+c[42]-c[43]-c[44]-c[45]-c[46]-c[47]-c[48]-c[49]-c[50]+c[51]+c[52]+c[53]+c[54]+c[55]+c[56]+c[57]+c[58]-c[59]-c[60]-c[61]-c[62],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]-c[7]+c[8]-c[9]+c[10]+c[11]-c[12]+c[13]-c[14]+c[15]-c[16]+c[17]-c[18]-c[19]+c[20]-c[21]+c[22]-c[23]+c[24]-c[25]+c[26]+c[27]-c[28]+c[29]-c[30]-c[31]+c[32]
|
|
-c[33]+c[34]+c[35]-c[36]+c[37]-c[38]+c[39]-c[40]+c[41]-c[42]-c[43]+c[44]-c[45]+c[46]-c[47]+c[48]-c[49]+c[50]+c[51]-c[52]+c[53]-c[54]+c[55]-c[56]+c[57]-c[58]-c[59]+c[60]-c[61]+c[62],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]-c[7]-c[8]+c[9]+c[10]+c[11]+c[12]-c[13]-c[14]+c[15]+c[16]-c[17]-c[18]-c[19]-c[20]+c[21]+c[22]-c[23]-c[24]+c[25]+c[26]+c[27]+c[28]-c[29]-c[30]-c[31]-c[32]
|
|
+c[33]+c[34]+c[35]+c[36]-c[37]-c[38]+c[39]+c[40]-c[41]-c[42]-c[43]-c[44]+c[45]+c[46]-c[47]-c[48]+c[49]+c[50]+c[51]+c[52]-c[53]-c[54]+c[55]+c[56]-c[57]-c[58]-c[59]-c[60]+c[61]+c[62],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]-c[7]+c[8]+c[9]-c[10]+c[11]-c[12]-c[13]+c[14]+c[15]-c[16]-c[17]+c[18]-c[19]+c[20]+c[21]-c[22]-c[23]+c[24]+c[25]-c[26]+c[27]-c[28]-c[29]+c[30]-c[31]+c[32]
|
|
+c[33]-c[34]+c[35]-c[36]-c[37]+c[38]+c[39]-c[40]-c[41]+c[42]-c[43]+c[44]+c[45]-c[46]-c[47]+c[48]+c[49]-c[50]+c[51]-c[52]-c[53]+c[54]+c[55]-c[56]-c[57]+c[58]-c[59]+c[60]+c[61]-c[62],
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]+c[10]+c[11]+c[12]+c[13]+c[14]-c[15]-c[16]-c[17]-c[18]-c[19]-c[20]-c[21]-c[22]-c[23]-c[24]-c[25]-c[26]-c[27]-c[28]-c[29]-c[30]-c[31]-c[32]
|
|
-c[33]-c[34]-c[35]-c[36]-c[37]-c[38]-c[39]-c[40]-c[41]-c[42]-c[43]-c[44]-c[45]-c[46]+c[47]+c[48]+c[49]+c[50]+c[51]+c[52]+c[53]+c[54]+c[55]+c[56]+c[57]+c[58]+c[59]+c[60]+c[61]+c[62],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]+c[7]-c[8]+c[9]-c[10]+c[11]-c[12]+c[13]-c[14]-c[15]+c[16]-c[17]+c[18]-c[19]+c[20]-c[21]+c[22]-c[23]+c[24]-c[25]+c[26]-c[27]+c[28]-c[29]+c[30]-c[31]+c[32]
|
|
-c[33]+c[34]-c[35]+c[36]-c[37]+c[38]-c[39]+c[40]-c[41]+c[42]-c[43]+c[44]-c[45]+c[46]+c[47]-c[48]+c[49]-c[50]+c[51]-c[52]+c[53]-c[54]+c[55]-c[56]+c[57]-c[58]+c[59]-c[60]+c[61]-c[62],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]+c[7]+c[8]-c[9]-c[10]+c[11]+c[12]-c[13]-c[14]-c[15]-c[16]+c[17]+c[18]-c[19]-c[20]+c[21]+c[22]-c[23]-c[24]+c[25]+c[26]-c[27]-c[28]+c[29]+c[30]-c[31]-c[32]
|
|
+c[33]+c[34]-c[35]-c[36]+c[37]+c[38]-c[39]-c[40]+c[41]+c[42]-c[43]-c[44]+c[45]+c[46]+c[47]+c[48]-c[49]-c[50]+c[51]+c[52]-c[53]-c[54]+c[55]+c[56]-c[57]-c[58]+c[59]+c[60]-c[61]-c[62],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]+c[7]-c[8]-c[9]+c[10]+c[11]-c[12]-c[13]+c[14]-c[15]+c[16]+c[17]-c[18]-c[19]+c[20]+c[21]-c[22]-c[23]+c[24]+c[25]-c[26]-c[27]+c[28]+c[29]-c[30]-c[31]+c[32]
|
|
+c[33]-c[34]-c[35]+c[36]+c[37]-c[38]-c[39]+c[40]+c[41]-c[42]-c[43]+c[44]+c[45]-c[46]+c[47]-c[48]-c[49]+c[50]+c[51]-c[52]-c[53]+c[54]+c[55]-c[56]-c[57]+c[58]+c[59]-c[60]-c[61]+c[62],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]+c[7]+c[8]+c[9]+c[10]-c[11]-c[12]-c[13]-c[14]-c[15]-c[16]-c[17]-c[18]+c[19]+c[20]+c[21]+c[22]-c[23]-c[24]-c[25]-c[26]+c[27]+c[28]+c[29]+c[30]-c[31]-c[32]
|
|
-c[33]-c[34]+c[35]+c[36]+c[37]+c[38]-c[39]-c[40]-c[41]-c[42]+c[43]+c[44]+c[45]+c[46]+c[47]+c[48]+c[49]+c[50]-c[51]-c[52]-c[53]-c[54]+c[55]+c[56]+c[57]+c[58]-c[59]-c[60]-c[61]-c[62],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]+c[7]-c[8]+c[9]-c[10]-c[11]+c[12]-c[13]+c[14]-c[15]+c[16]-c[17]+c[18]+c[19]-c[20]+c[21]-c[22]-c[23]+c[24]-c[25]+c[26]+c[27]-c[28]+c[29]-c[30]-c[31]+c[32]
|
|
-c[33]+c[34]+c[35]-c[36]+c[37]-c[38]-c[39]+c[40]-c[41]+c[42]+c[43]-c[44]+c[45]-c[46]+c[47]-c[48]+c[49]-c[50]-c[51]+c[52]-c[53]+c[54]+c[55]-c[56]+c[57]-c[58]-c[59]+c[60]-c[61]+c[62],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]+c[7]+c[8]-c[9]-c[10]-c[11]-c[12]+c[13]+c[14]-c[15]-c[16]+c[17]+c[18]+c[19]+c[20]-c[21]-c[22]-c[23]-c[24]+c[25]+c[26]+c[27]+c[28]-c[29]-c[30]-c[31]-c[32]
|
|
+c[33]+c[34]+c[35]+c[36]-c[37]-c[38]-c[39]-c[40]+c[41]+c[42]+c[43]+c[44]-c[45]-c[46]+c[47]+c[48]-c[49]-c[50]-c[51]-c[52]+c[53]+c[54]+c[55]+c[56]-c[57]-c[58]-c[59]-c[60]+c[61]+c[62],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]+c[7]-c[8]-c[9]+c[10]-c[11]+c[12]+c[13]-c[14]-c[15]+c[16]+c[17]-c[18]+c[19]-c[20]-c[21]+c[22]-c[23]+c[24]+c[25]-c[26]+c[27]-c[28]-c[29]+c[30]-c[31]+c[32]
|
|
+c[33]-c[34]+c[35]-c[36]-c[37]+c[38]-c[39]+c[40]+c[41]-c[42]+c[43]-c[44]-c[45]+c[46]+c[47]-c[48]-c[49]+c[50]-c[51]+c[52]+c[53]-c[54]+c[55]-c[56]-c[57]+c[58]-c[59]+c[60]+c[61]-c[62],
|
|
+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]-c[7]-c[8]-c[9]-c[10]-c[11]-c[12]-c[13]-c[14]-c[15]-c[16]-c[17]-c[18]-c[19]-c[20]-c[21]-c[22]+c[23]+c[24]+c[25]+c[26]+c[27]+c[28]+c[29]+c[30]-c[31]-c[32]
|
|
-c[33]-c[34]-c[35]-c[36]-c[37]-c[38]+c[39]+c[40]+c[41]+c[42]+c[43]+c[44]+c[45]+c[46]+c[47]+c[48]+c[49]+c[50]+c[51]+c[52]+c[53]+c[54]-c[55]-c[56]-c[57]-c[58]-c[59]-c[60]-c[61]-c[62],
|
|
-c[0]+c[1]-c[2]+c[3]-c[4]+c[5]-c[6]-c[7]+c[8]-c[9]+c[10]-c[11]+c[12]-c[13]+c[14]-c[15]+c[16]-c[17]+c[18]-c[19]+c[20]-c[21]+c[22]+c[23]-c[24]+c[25]-c[26]+c[27]-c[28]+c[29]-c[30]-c[31]+c[32]
|
|
-c[33]+c[34]-c[35]+c[36]-c[37]+c[38]+c[39]-c[40]+c[41]-c[42]+c[43]-c[44]+c[45]-c[46]+c[47]-c[48]+c[49]-c[50]+c[51]-c[52]+c[53]-c[54]-c[55]+c[56]-c[57]+c[58]-c[59]+c[60]-c[61]+c[62],
|
|
+c[0]-c[1]-c[2]+c[3]+c[4]-c[5]-c[6]-c[7]-c[8]+c[9]+c[10]-c[11]-c[12]+c[13]+c[14]-c[15]-c[16]+c[17]+c[18]-c[19]-c[20]+c[21]+c[22]+c[23]+c[24]-c[25]-c[26]+c[27]+c[28]-c[29]-c[30]-c[31]-c[32]
|
|
+c[33]+c[34]-c[35]-c[36]+c[37]+c[38]+c[39]+c[40]-c[41]-c[42]+c[43]+c[44]-c[45]-c[46]+c[47]+c[48]-c[49]-c[50]+c[51]+c[52]-c[53]-c[54]-c[55]-c[56]+c[57]+c[58]-c[59]-c[60]+c[61]+c[62],
|
|
-c[0]-c[1]+c[2]+c[3]-c[4]-c[5]+c[6]-c[7]+c[8]+c[9]-c[10]-c[11]+c[12]+c[13]-c[14]-c[15]+c[16]+c[17]-c[18]-c[19]+c[20]+c[21]-c[22]+c[23]-c[24]-c[25]+c[26]+c[27]-c[28]-c[29]+c[30]-c[31]+c[32]
|
|
+c[33]-c[34]-c[35]+c[36]+c[37]-c[38]+c[39]-c[40]-c[41]+c[42]+c[43]-c[44]-c[45]+c[46]+c[47]-c[48]-c[49]+c[50]+c[51]-c[52]-c[53]+c[54]-c[55]+c[56]+c[57]-c[58]-c[59]+c[60]+c[61]-c[62],
|
|
+c[0]+c[1]+c[2]-c[3]-c[4]-c[5]-c[6]-c[7]-c[8]-c[9]-c[10]+c[11]+c[12]+c[13]+c[14]-c[15]-c[16]-c[17]-c[18]+c[19]+c[20]+c[21]+c[22]+c[23]+c[24]+c[25]+c[26]-c[27]-c[28]-c[29]-c[30]-c[31]-c[32]
|
|
-c[33]-c[34]+c[35]+c[36]+c[37]+c[38]+c[39]+c[40]+c[41]+c[42]-c[43]-c[44]-c[45]-c[46]+c[47]+c[48]+c[49]+c[50]-c[51]-c[52]-c[53]-c[54]-c[55]-c[56]-c[57]-c[58]+c[59]+c[60]+c[61]+c[62],
|
|
-c[0]+c[1]-c[2]-c[3]+c[4]-c[5]+c[6]-c[7]+c[8]-c[9]+c[10]+c[11]-c[12]+c[13]-c[14]-c[15]+c[16]-c[17]+c[18]+c[19]-c[20]+c[21]-c[22]+c[23]-c[24]+c[25]-c[26]-c[27]+c[28]-c[29]+c[30]-c[31]+c[32]
|
|
-c[33]+c[34]+c[35]-c[36]+c[37]-c[38]+c[39]-c[40]+c[41]-c[42]-c[43]+c[44]-c[45]+c[46]+c[47]-c[48]+c[49]-c[50]-c[51]+c[52]-c[53]+c[54]-c[55]+c[56]-c[57]+c[58]+c[59]-c[60]+c[61]-c[62],
|
|
+c[0]-c[1]-c[2]-c[3]-c[4]+c[5]+c[6]-c[7]-c[8]+c[9]+c[10]+c[11]+c[12]-c[13]-c[14]-c[15]-c[16]+c[17]+c[18]+c[19]+c[20]-c[21]-c[22]+c[23]+c[24]-c[25]-c[26]-c[27]-c[28]+c[29]+c[30]-c[31]-c[32]
|
|
+c[33]+c[34]+c[35]+c[36]-c[37]-c[38]+c[39]+c[40]-c[41]-c[42]-c[43]-c[44]+c[45]+c[46]+c[47]+c[48]-c[49]-c[50]-c[51]-c[52]+c[53]+c[54]-c[55]-c[56]+c[57]+c[58]+c[59]+c[60]-c[61]-c[62],
|
|
-c[0]-c[1]+c[2]-c[3]+c[4]+c[5]-c[6]-c[7]+c[8]+c[9]-c[10]+c[11]-c[12]-c[13]+c[14]-c[15]+c[16]+c[17]-c[18]+c[19]-c[20]-c[21]+c[22]+c[23]-c[24]-c[25]+c[26]-c[27]+c[28]+c[29]-c[30]-c[31]+c[32]
|
|
+c[33]-c[34]+c[35]-c[36]-c[37]+c[38]+c[39]-c[40]-c[41]+c[42]-c[43]+c[44]+c[45]-c[46]+c[47]-c[48]-c[49]+c[50]-c[51]+c[52]+c[53]-c[54]-c[55]+c[56]+c[57]-c[58]+c[59]-c[60]-c[61]+c[62],
|
|
};
|
|
int word = 0, best = 0, next = 0;
|
|
for (int msg = 0 ; msg < W; ++msg) {
|
|
if (sum[msg] > best) {
|
|
next = best;
|
|
best = sum[msg];
|
|
word = msg;
|
|
} else if (sum[msg] > next) {
|
|
next = sum[msg];
|
|
}
|
|
}
|
|
if (best == next)
|
|
return -1;
|
|
return word;
|
|
}
|
|
};
|
|
|
|
}
|
|
|