public IPair <S1, S2> Block(IPair <S1, S2> s) { return(new Pair <S1, S2>(Factory1.Block(s.Item1), Factory2.Block(s.Item2))); }