Separate my integers
Haskell, 317 209 174 168 bytes

The function f does the job.



(#)=elem
x?y=[1|a&lt;-x,b&lt;-y,not$any(#a)b]
f n l|t(++)="TS"|t zip="T0"|t(?)="T1"|1&gt;0="T2"where
    t p=any null[p(x%y)(y%x)|x&lt;-[0..n-1],y&lt;-[0..x-1]]
    x%y=[z|z&lt;-l,x#z,not$y#z]


tests : 

main=do
    putStrLn $ f 2 []
    putStrLn $ f 2 [[],[1]]
    putStrLn $ f 2 [[0],[1]]
    putStrLn $ f 3 [[0],[0,1,2],[1,2]]
    putStrLn $ f 3 [[],[0],[0,1],[2]]
    putStrLn $ f 3 [[0],[0,1],[2,1],[0,1,2]]
    putStrLn $ f 3 [[0],[0,1],[2,1],[2,0]]
    putStrLn $ f 6 [[0,2,4],[0,3,5],[1,2],[3,4,5]]
    putStrLn $ f 6 [[0,2,4],[0,3,5],[1,2],[2,5],[3,4,5]]
    putStrLn $ f 6 [[0,2,4],[0,3,5],[1,2],[2,5],[3,1],[3,4,5]]
    putStrLn $ f 6 [[0,1],[0,2,3],[1,4],[2,4],[2,3,5],[1,3],[4,5]]


output:

TS
T0
T2
TS
T0
T0
T1
TS
T0
T1
T2