For example, let's make position 6 be 0,1,0. The faces would then be: f (0,1,0)/11 5/12 1/9 then later on f 7/15, (0,1,0)/16 ... Two faces can and do touch after all. They aren't assigned, the data is just used in that order. If any part of the full vertex (position + uv) doesn't match another full vertex they are unique even if part is the same (and get different indices for the GL element buffer). You will end up duplicating data, outputing a position multiple times if it appears with different uvs.
Also, easier to think of those v-lines as positions.
Edit: if that's not terribly clear, I apologize. I'm exhausted. I'll post some code tomorrow if necessary.