I dunno how good this would work, I have not tested it though (don't have a 3 input furnace to test with) but it should work, I think,
let you use one list for 1 to 3 items for input in any order
as it sorts them into an int[][]
and counts them then
searches the list, then if it didn't find something(gets null) it and there are more then one input
it flips item 0 and item 1 looks again
then if still null and there's 3 inputs it will go and check for the other 4 possible combinations left each checking for null
then returns either null or the itemstack
of course doing it this way does mean you have to add to the list with the items in a certain order so they can be found for 1 or to inputs, but that should not be a problem
when it searches it looks for 3 sets of values each time even if it only got 1 set, so you need to fill in the blanks with 0 as that's what it searches for if it don't get told something else.
two methods
http://pastebin.com/51krzJTD