#include <stdio.h>
#include <math.h>

int gchance(short sint, short sluk, short sdex) {
	return 2*sluk + 2*sdex + sint;
}

int costof(short statp) {
	int i, j;
	for(i = 1, j = 0; i < statp; i++) j += (int) floor((i - 1) / 10.0) + 2;
	return j;
}

int gainof(short lvl) {
	int i, j;
	for(i = 1, j = 48; i < lvl; i++) j += (int) floor(i/5.0) + 3;
	return j;
}

int scheck(short sint, short sluk, short sdex, short glvl) {
	return (costof(sint) + costof(sluk) + costof(sdex) <= gainof(glvl));
}

void main() {
	short sint, sluk, sdex, fint, fluk, fdex, glvl, mint, mluk, mdex;
	int chance;

	mint = mluk = mdex = 99;
	for(glvl = 99; glvl >= 1; glvl--) {
		chance = fint = fluk = fdex = 0;
		for(sint = 9; sint <= mint; sint++)
			for(sluk = 9; sluk <= mluk; sluk++)
				for(sdex = 9; sdex <= mdex; sdex++)
					if(scheck(sint, sluk, sdex, glvl)) {
						if((gchance(sint, sluk, sdex) > chance) || ((gchance(sint, sluk, sdex) == chance) && (sint > fint))) {
							fint = sint;
							fluk = sluk;
							fdex = sdex;
							chance = gchance(sint, sluk, sdex);
						}
						/* printf("Dex %hi, Luk %hi, Int %hi, lvl %i, points %i of %i, chance %i\n", sdex, sluk, sint, GLVL, costof(sdex)+costof(sluk)+costof(sint), gainof(glvl), gchance(sint, sluk, sdex)); */
					}
		mint = fint; mluk = fluk; mdex = fdex;
		printf("%hi (%i free): Dex %hi, Luk %hi, Int %hi\n", glvl, gainof(glvl) - (costof(fint) + costof(fluk) + costof(fdex)), fdex, fluk, fint);
	}
}

