theoretically first three are working