Sounds like homework to me. But here's what I'd do.
First sort the numbers (there's your n*log(n)).
Now, create pointers to the list, initialize it with the first 4 numbers. Once you have that, you check the sum of your 4 current numbers with the total. It should be less than or equal to your search sum (if it's not, you can quit early). Now all you need to do is traverse rest of your list alternately replacing your pointers with the current value in the list. This only need to happen once (or really at worst 4 times) so there's your other n, which makes n^2*log(n)
You'll need to keep track of some logic to know if you're over/under your sum and what to do next, but I leave that as your homework assignment.