#include <stdio.h>
#include <stdarg.h>

// Zwykły printf, ale z odpowiednim wcięciem.
void iprintf(int indent, const char *format, ...) {
    va_list args;
	va_start(args, format);

	int i;
	for (i = 0; i < 3*indent; i++) {
		putchar(' ');
	}
	vprintf(format, args);

	va_end(args);	
}

int silnia(int n, int indent) {
	if (n == 0) {
		iprintf(indent, "silnia(0) = 1\n");
		return 1;
	}
	
	iprintf(indent, "silnia(%d) = %d*silnia(%d)\n", n, n, n-1);
	
	int result = n*silnia(n-1, indent+1);
	
	iprintf(indent, "silnia(%d) = %d\n", n, result);
	return result;
}

int main(void) {
	silnia(10, 0);
	
	return 0;
}
