#include <limits.h>
#include <stdio.h>

struct int_pair {
	int a;
	int b;
};

struct int_pair find_max_index_(int *array, size_t length, size_t index, int max1, int max2, size_t idx1, size_t idx2) {
	if ( index == length ) return (struct int_pair){ idx1, idx2 };
	else if ( array[index] > max1 )
		return find_max_index_(array, length, index + 1, array[index], max1, index, idx1);
	else if ( array[index] > max2 )
		return find_max_index_(array, length, index + 1, max1, array[index], idx1, index);
	else return find_max_index_(array, length, index + 1, max1, max2, idx1, idx2);
}

struct int_pair find_max_index(int *array, size_t length) {
	return find_max_index_(array, length, 0, INT_MIN, INT_MIN, -1, -1);
}

int main(void) {
	int data[] = { 2, 0, 1, 5, 5, 21 };
	struct int_pair result;
	result = find_max_index(data, 6);
	printf("%d %d\n", result.a, result.b);
	return 0;
}