#include <stdio.h>
#include <inttypes.h>

#define NUM_ATTRIBUTES 8

#define TARGET_COST_MIN 200
#define TARGET_COST_MAX 200

#define ATTRIBUTE_MIN 4
#define ATTRIBUTE_MAX 9

int attr_cost( int attr )
{
    return (attr+1)*attr/2;
}

int attrs_total_cost  ( const int attr[NUM_ATTRIBUTES] )
{
    int i;
    int total = 0;
    for( i=0; i<NUM_ATTRIBUTES ; ++i )
    {
        total += attr_cost( attr[i]);
    }
    return total;
}

void attrs_increment  ( int attr[NUM_ATTRIBUTES] )
{
    int i;
    for( i=NUM_ATTRIBUTES-1; i > 0; --i )
    {
        ++attr[i];
        if(attr[i] > attr[i-1])
        {
            attr[i] = ATTRIBUTE_MIN;
        }
        else
        {
            return;
        }

    }
    ++attr[0];
}

void attrs_print  ( const int attr[NUM_ATTRIBUTES] )
{
    int i;
    printf("%d", attr[0]);
    for( i=1; i<NUM_ATTRIBUTES ; ++i )
    {
        printf(",%d", attr[i]);
    }
}

void attrs_clear  ( int attr[NUM_ATTRIBUTES] )
{
    int i;
    for( i=0; i<NUM_ATTRIBUTES ; ++i )
    {
        attr[i] = ATTRIBUTE_MIN;
    }
}


int main(int argc, char** argv)
{
    int attr[NUM_ATTRIBUTES];
    int cost;

    attrs_clear(attr);

    while( attr[0] <= ATTRIBUTE_MAX )
    {
        cost = attrs_total_cost( attr );
        if( TARGET_COST_MIN <= cost && cost <= TARGET_COST_MAX)
        {
            attrs_print( attr );
            printf(" = %d\n", cost);
        }
        attrs_increment( attr );
    }

    return 0;
}
