Determining first name and surname from a name pair?
You can apply a simpler strategy here that will likely lead to better results than a neural network. Luckily we have census data for most countries. For example you can use US census data. 

We can find the commonality of the two names in the array using their search function. Then we can say that the name with the higher rank is the first name. For example we can see that for the name ['John', 'Smith'], John has a rank of 27 for the most recent year whereas Smith is not listed. So we can assume that John is the first name and Smith is the last name. 

This technique is a very old school means of prediction, we already have the distribution of the data through polls. So we can use it directly, we do not need to train a model to learn the underlining distribution (this would be very difficult with something like names which is has a lot of noise).

If you have additional data for each person like a date of birth or a gender then you will get better results through this prior information. This is similar to what you would achieve when applying Naive Bayes algorithm, however in this instance once again the distribution has already been determined.