#include<fstream>
#include<algorithm>
#include<cstring>
#include<deque>
#define INF 1000000000000LL
using namespace std;
int n, i, j, nr1, nr2, ii, ok;
struct point{
int x;
int y;
int poz;
};
point p[255], p1[255], p2[255];
int sol[255], f[255], con[255], s[255];
deque<int> d;
long long minim, aria1, aria2;
ifstream fin("gradina.in");
ofstream fout("gradina.out");
long long det(int X1, int Y1, int X2, int Y2, int X3, int Y3){
return (X2 - X1) * 1LL * (Y3 - Y1) - (X3 - X1) * 1LL * (Y2 - Y1);
}
long long modul(long long x){
if(x > 0){
return x;
}
return -x;
}
long long convex(point p[], int n){
memset(f, 0, sizeof(f));
if(n < 3){
return INF;
}
d.clear();
int i;
d.push_back(1);
for(i = 2; i < n; i++){
if(det(p[1].x, p[1].y, p[n].x, p[n].y, p[i].x, p[i].y) > 0){
d.push_back(i);
}
else{
d.push_front(i);
}
}
d.push_back(n);
d.push_back(d.front());
for(i = 0; i <= n - 2; i++){
if(det(p[ d[i] ].x, p[ d[i] ].y, p[ d[i + 1] ].x, p[ d[i + 1] ].y, p[ d[i + 2] ].x, p[ d[i + 2] ].y) > 0){
return INF;
}
}
long long a = 0;
for(i = 0; i <= n - 1; i++){
a += det(0, 0, p[ d[i] ].x, p[ d[i] ].y, p[ d[i + 1] ].x, p[ d[i + 1] ].y);
}
if(a > 0){
return a;
}
return -a;
}
int cmp(point a, point b){
if(a.x != b.x){
return a.x < b.x;
}
return a.y < b.y;
}
int main(){
fin>> n;
for(i = 1; i <= n; i++){
fin>> p[i].x >> p[i].y;
p[i].poz = i;
}
minim = INF;
sort(p + 1, p + n + 1, cmp);
nr1 = 4;
p1[1] = p[1];
p1[2] = p[2];
p1[3] = p[4];
p1[4] = p[5];
long long ab = convex(p1, nr1);
for(i = 1; i <= n; i++){
for(j = 1; j <= n; j++){
if(i != j){
nr1 = nr2 = 0;
for(ii = 1; ii <= n; ii++){
if(ii == i){
nr1++;
p1[nr1] = p[ii];
con[ p[ii].poz ] = 1;
}
else{
if(ii == j){
nr2++;
p2[nr2] = p[ii];
con[p[ii].poz] = 2;
}
else{
if(det(p[ii].x, p[ii].y, p[i].x, p[i].y, p[j].x, p[j].y) > 0){
nr1++;
p1[nr1] = p[ii];
con[ p[ii].poz ] = 1;
}
else{
nr2++;
p2[nr2] = p[ii];
con[ p[ii].poz ] = 2;
}
}
}
}
aria1 = convex(p1, nr1);
aria2 = convex(p2, nr2);
if(aria1 != INF && aria2 != INF){
if(modul(aria1 - aria2) < minim){
minim = modul(aria1 - aria2);
for(ii = 1; ii <= n; ii++){
sol[ii] = con[ii];
}
}
else{
if(modul(aria1 - aria2) == minim){
ok = 0;
for(ii = 1; ii <= n; ii++){
if(con[ii] < sol[ii]){
ok = 1;
break;
}
if(sol[ii] < con[ii]){
break;
}
}
if(ok == 1){
for(ii = 1; ii <= n; ii++){
sol[ii] = con[ii];
}
}
}
}
}
}
}
}
if(minim % 2 == 0){
fout<< minim / 2 <<".0\n";
}
else{
fout<< minim / 2 <<".5\n";
}
for(i = 1; i <= n; i++){
if(sol[i] == 1){
fout<<"I";
}
else{
fout<<"V";
}
}
return 0;
}