//#include "encoder.h"
//#include "encoderlib.h"
//#include "decoder.h"
//#include "decoderlib.h"
#include <iostream>
#include <cassert>
#include <algorithm>
#include <vector>
using namespace std;
void send(int x);
void output(int x);
bool f=0;
vector<int> fac[600];
vector<int> add(vector<int> x, vector<int> y)
{
if (x.size()<y.size()) swap(x, y);
vector<int> z(x.size(), 0);
for (int i=0; i<z.size(); i++)
{
z[i]=x[i];
if (i<y.size()) z[i]+=y[i];
}
for (int i=0; i<z.size(); i++)
{
if (z[i]>=10)
{
if (i==z.size()-1) z.push_back(0);
z[i+1]+=z[i]/10;
z[i]%=10;
}
}
reverse(z.begin(), z.end());
return z;
}
vector<int> mul(vector<int> x, vector<int> y)
{
if (x.size()<y.size()) swap(x, y);
vector<int> z(x.size()+y.size()-1, 0);
for (int i=0; i<x.size(); i++)
{
for (int j=0; j<y.size(); j++)
{
z[i+j]+=x[i]*y[j];
}
}
for (int i=0; i<z.size(); i++)
{
if (z[i]>=10)
{
if (i==z.size()-1) z.push_back(0);
z[i+1]+=z[i]/10;
z[i]%=10;
}
}
return z;
}
vector<int> div(vector<int> x, vector<int> y)
{
assert(x.size()>=y.size());
vector<int> cur={};
for (int i=x.size()-1; i>=0; i--)
{
}
}
void init()
{
fac[0]={1};
for (int i=1; i<600; i++) fac[i]=mul(fac[i-1], {i});
}
void encode(int N, int A[])
{
if (!f)
{
init();
f=1;
}
}
void decode(int N, int L, int B[])
{
if (!f)
{
init();
f=1;
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 1000
#define MAX_M 10000
static int message[MAX_N];
static int N, NN;
static int encoded_message[MAX_M];
static int M;
static int output_message[MAX_N];
static int O;
void send(int x) {
printf("M = %d, send(%d)\n", M, x);
if (M == MAX_M) {
printf("Encoded message too long\n");
exit(0);
}
encoded_message[M] = x;
M++;
}
int read_data() {
if (NN == M) {
printf("Read too many encoded message\n");
exit(0);
}
NN++;
return encoded_message[NN - 1];
}
void output(int y) {
if (O == N)
O++;
if (O > N)
return;
output_message[O] = y;
O++;
}
static void random_shuffle() {
int i, t, p;
for (i = 0; i < M - 1; i++) {
p = rand() % (M - i);
t = encoded_message[i];
encoded_message[i] = encoded_message[i + p];
encoded_message[i + p] = t;
}
}
static int check_output() {
int i;
if (O != N)
return 0;
for (i = 0; i < N; i++)
if (message[i] != output_message[i])
return 0;
return 1;
}
int main() {
scanf("%d", &N);
for (int i = 0; i < N; i++)
scanf("%d", &message[i]);
M = 0;
encode(N, message);
random_shuffle();
NN = 0;
O = 0;
decode(N, M, encoded_message);
if (!check_output()) {
printf("Incorrect\n");
exit(0);
}
printf("Correct.\n");
printf("%f\n", (float)M / N);
return 0;
}
//#include "encoder.h"
//#include "encoderlib.h"
//#include "decoder.h"
//#include "decoderlib.h"
#include <iostream>
#include <cassert>
#include <algorithm>
#include <vector>
using namespace std;
void send(int x);
void output(int x);
bool f=0;
vector<int> fac[600];
vector<int> add(vector<int> x, vector<int> y)
{
if (x.size()<y.size()) swap(x, y);
vector<int> z(x.size(), 0);
for (int i=0; i<z.size(); i++)
{
z[i]=x[i];
if (i<y.size()) z[i]+=y[i];
}
for (int i=0; i<z.size(); i++)
{
if (z[i]>=10)
{
if (i==z.size()-1) z.push_back(0);
z[i+1]+=z[i]/10;
z[i]%=10;
}
}
reverse(z.begin(), z.end());
return z;
}
vector<int> mul(vector<int> x, vector<int> y)
{
if (x.size()<y.size()) swap(x, y);
vector<int> z(x.size()+y.size()-1, 0);
for (int i=0; i<x.size(); i++)
{
for (int j=0; j<y.size(); j++)
{
z[i+j]+=x[i]*y[j];
}
}
for (int i=0; i<z.size(); i++)
{
if (z[i]>=10)
{
if (i==z.size()-1) z.push_back(0);
z[i+1]+=z[i]/10;
z[i]%=10;
}
}
return z;
}
vector<int> div(vector<int> x, vector<int> y)
{
assert(x.size()>=y.size());
vector<int> cur={};
for (int i=x.size()-1; i>=0; i--)
{
}
}
void init()
{
fac[0]={1};
for (int i=1; i<600; i++) fac[i]=mul(fac[i-1], {i});
}
void encode(int N, int A[])
{
if (!f)
{
init();
f=1;
}
}
void decode(int N, int L, int B[])
{
if (!f)
{
init();
f=1;
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 1000
#define MAX_M 10000
static int message[MAX_N];
static int N, NN;
static int encoded_message[MAX_M];
static int M;
static int output_message[MAX_N];
static int O;
void send(int x) {
printf("M = %d, send(%d)\n", M, x);
if (M == MAX_M) {
printf("Encoded message too long\n");
exit(0);
}
encoded_message[M] = x;
M++;
}
int read_data() {
if (NN == M) {
printf("Read too many encoded message\n");
exit(0);
}
NN++;
return encoded_message[NN - 1];
}
void output(int y) {
if (O == N)
O++;
if (O > N)
return;
output_message[O] = y;
O++;
}
static void random_shuffle() {
int i, t, p;
for (i = 0; i < M - 1; i++) {
p = rand() % (M - i);
t = encoded_message[i];
encoded_message[i] = encoded_message[i + p];
encoded_message[i + p] = t;
}
}
static int check_output() {
int i;
if (O != N)
return 0;
for (i = 0; i < N; i++)
if (message[i] != output_message[i])
return 0;
return 1;
}
int main() {
scanf("%d", &N);
for (int i = 0; i < N; i++)
scanf("%d", &message[i]);
M = 0;
encode(N, message);
random_shuffle();
NN = 0;
O = 0;
decode(N, M, encoded_message);
if (!check_output()) {
printf("Incorrect\n");
exit(0);
}
printf("Correct.\n");
printf("%f\n", (float)M / N);
return 0;
}