(*If[$VersionNumber>=2.,$Messages=OutputStream["",1],$Messages={}]*)

BeginPackage["Contig`m`"]

Begin["`Private`"]

(*Belegen von Module durch Block f�r Versionen 1.?*)
If[$VersionNumber<2.,Module=Block]

simplify[x_]:=(Simplify[x]/.Hyp`m`Expandq)

MComplement[x__]:=Module[{ZwErg={},i,j},
    For[i=1,i<=Length[{x}[[1]]],i++,
        If[!MemberQ[ZwErg,{x}[[1,i]]],
          ZwErg=Join[ZwErg,Table[{x}[[1,i]],
           {Count[{x}[[1]],{x}[[1,i]]]-
            Max[Table[Count[{x}[[j]],{x}[[1,i]]],{j,2,Length[{x}]}]]}]]
          ]
       ];
    ZwErg
]


(*Two-term relations*)
C01:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
         1+z*Apply[Times,Map[Hyp`m`p[#,1]&,List1]]/Apply[Times,Map[Hyp`m`p[#,1]&,List2]]*
                Hyp`m`F[Join[{1},1+List1],Join[{2},1+List2],z]
        );
C02:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Rest1},
         Rest1=MComplement[List1,{1}];
         1/z/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,List2-1]]*
                Hyp`m`F[Join[{1},Rest1-1],List2-1,z]-
         1/z/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,List2-1]]
        ]/;MemberQ[List1,1]);

(*Three-term relations with one parameter*)
C14[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,Rest1},
         El1=List1[[n1]];
         Rest1=Drop[List1,{n1,n1}];
         z*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,List2]]*
                Hyp`m`F[Join[{El1},Rest1+1],List2+1,z]+
         Hyp`m`F[Join[{El1-1},Rest1],List2,z]
        ]);
C15[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,Rest1},
         El1=List1[[n1]];
         Rest1=Drop[List1,{n1,n1}];
         Hyp`m`F[Join[{El1+1},Rest1],List2,z]-
         z*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,List2]]*
                Hyp`m`F[Join[{El1+1},Rest1+1],List2+1,z]
        ]);
C16[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,Rest1},
         El1=List1[[n1]];
         Rest1=Drop[List1,{n1,n1}];
         1/z/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,List2-1]]*
                Hyp`m`F[Join[{El1},Rest1-1],List2-1,z]-
         1/z/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,List2-1]]*
                Hyp`m`F[Join[{El1-1},Rest1-1],List2-1,z]
        ]);
C17[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,Rest1},
         El1=List1[[n1]];
         Rest1=Drop[List1,{n1,n1}];
         z*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,List2]]*
                Hyp`m`F[Join[{El1},Rest1+1],List2+1,z]+
         Hyp`m`F[Join[{El1-1},Rest1],List2,z]
        ]);
C18[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,Rest1},
         El1=List1[[n1]];
         Rest1=Drop[List1,{n1,n1}];
         Hyp`m`F[Join[{El1+1},Rest1],List2,z]-
         z*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,List2]]*
                Hyp`m`F[Join[{El1+1},Rest1+1],List2+1,z]
        ]);
C19[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,Rest1},
         El1=List1[[n1]];
         Rest1=Drop[List1,{n1,n1}];
         1/z/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,List2-1]]*
                Hyp`m`F[Join[{El1},Rest1-1],List2-1,z]-
         1/z/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,List2-1]]*
                Hyp`m`F[Join[{El1-1},Rest1-1],List2-1,z]
        ]);
C20[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El2,Rest2},
         El2=List2[[n1]];
         Rest2=Drop[List2,{n1,n1}];
         z/(Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1])*Apply[Times,Map[Hyp`m`p[#,1]&,List1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[List1+1,Join[{El2+2},Rest2+1],z]+
         Hyp`m`F[List1,Join[{El2+1},Rest2],z]
        ]);
C21[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El2,Rest2},
         El2=List2[[n1]];
         Rest2=Drop[List2,{n1,n1}];
         Hyp`m`F[List1,Join[{El2-1},Rest2],z]-
         z/(Hyp`m`p[El2-1,1]*Hyp`m`p[El2,1])*Apply[Times,Map[Hyp`m`p[#,1]&,List1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[List1+1,Join[{El2+1},Rest2+1],z]
        ]);
C22[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El2,Rest2},
         El2=List2[[n1]];
         Rest2=Drop[List2,{n1,n1}];
         1/z*(Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Apply[Times,Map[Hyp`m`p[#,1]&,List1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[List1-1,Join[{El2-2},Rest2-1],z]-
         1/z*(Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Apply[Times,Map[Hyp`m`p[#,1]&,List1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[List1-1,Join[{El2-1},Rest2-1],z]
        ]);
C23[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El2,Rest2},
         El2=List2[[n1]];
         Rest2=Drop[List2,{n1,n1}];
         z/(Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1])*Apply[Times,Map[Hyp`m`p[#,1]&,List1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[List1+1,Join[{El2+2},Rest2+1],z]+
         Hyp`m`F[List1,Join[{El2+1},Rest2],z]
        ]);
C24[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El2,Rest2},
         El2=List2[[n1]];
         Rest2=Drop[List2,{n1,n1}];
         Hyp`m`F[List1,Join[{El2-1},Rest2],z]-
         z/(Hyp`m`p[El2-1,1]*Hyp`m`p[El2,1])*Apply[Times,Map[Hyp`m`p[#,1]&,List1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[List1+1,Join[{El2+1},Rest2+1],z]
        ]);
C25[n1_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El2,Rest2},
         El2=List2[[n1]];
         Rest2=Drop[List2,{n1,n1}];
         1/z*(Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Apply[Times,Map[Hyp`m`p[#,1]&,List1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[List1-1,Join[{El2-2},Rest2-1],z]-
         1/z*(Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Apply[Times,Map[Hyp`m`p[#,1]&,List1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[List1-1,Join[{El2-1},Rest2-1],z]
        ]);

(*Three-term relations with two parameters*)
C26[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1},
         El1=List1[[n1]];
         El2=List1[[n2]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Hyp`m`p[El2,1]/Hyp`m`p[El2-El1,1]*Hyp`m`F[Join[{El1,El2+1},Rest1],List2,z]+
                Hyp`m`p[El1,1]/Hyp`m`p[El1-El2,1]*Hyp`m`F[Join[{El1+1,El2},Rest1],List2,z]
        ]);
C27[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1},
         El1=List1[[n1]];
         El2=List1[[n2]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Hyp`m`p[El2,1]/Hyp`m`p[El1-1,1]*Hyp`m`F[Join[{El1-1,El2+1},Rest1],List2,z]+
                Hyp`m`p[El1-El2-1,1]/Hyp`m`p[El1-1,1]*Hyp`m`F[Join[{El1-1,El2},Rest1],List2,z]
        ]);
C30[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1},
         El1=List1[[n1]];
         El2=List1[[n2]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Hyp`m`F[Join[{El1-1,El2+1},Rest1],List2,z]+
         z*Hyp`m`p[El2+1-El1,1]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,List2]]*
                Hyp`m`F[Join[{El1,El2+1},Rest1+1],List2+1,z]
        ]);
C31[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1},
         El1=List1[[n1]];
         El2=List1[[n2]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         1/z/Hyp`m`p[El2-El1,1]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,List2-1]]*
                Hyp`m`F[Join[{El1,El2-1},Rest1-1],List2-1,z]-
         1/z/Hyp`m`p[El2-El1,1]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,List2-1]]*
                Hyp`m`F[Join[{El1-1,El2},Rest1-1],List2-1,z]
        ]);
C32[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1},
         El1=List1[[n1]];
         El2=List1[[n2]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Hyp`m`F[Join[{El1-1,El2-1},Rest1],List2,z]+
         z*Hyp`m`p[El1+El2-1,1]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,List2]]*
                Hyp`m`F[Join[{El1,El2,El1+El2},Rest1+1],Join[{El1+El2-1},List2+1],z]
        ]);
C33[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1},
         El1=List1[[n1]];
         El2=List1[[n2]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Hyp`m`F[Join[{El1+1,El2+1},Rest1],List2,z]-
         z*Hyp`m`p[El1+El2+1,1]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,List2]]*
                Hyp`m`F[Join[{El1+1,El2+1,El1+El2+2},Rest1+1],Join[{El1+El2+1},List2+1],z]
        ]);
C34[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n2]];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{n2,n2}];
         Hyp`m`p[El2-1,1]/Hyp`m`p[El2-El1-1,1]*Hyp`m`F[Join[{El1},Rest1],Join[{El2-1},Rest2],z]+
                Hyp`m`p[El1,1]/Hyp`m`p[El1+1-El2,1]*Hyp`m`F[Join[{El1+1},Rest1],Join[{El2},Rest2],z]
        ]);
C35[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n2]];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{n2,n2}];
         Hyp`m`p[El2-1,1]/Hyp`m`p[El1-1,1]*Hyp`m`F[Join[{El1-1},Rest1],Join[{El2-1},Rest2],z]+
                Hyp`m`p[El1-El2,1]/Hyp`m`p[El1-1,1]*Hyp`m`F[Join[{El1-1},Rest1],Join[{El2},Rest2],z]
        ]);
C36[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n2]];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{n2,n2}];
         Hyp`m`p[El2-El1,1]/Hyp`m`p[El2,1]*Hyp`m`F[Join[{El1},Rest1],Join[{El2+1},Rest2],z]+
                Hyp`m`p[El1,1]/Hyp`m`p[El2,1]*Hyp`m`F[Join[{El1+1},Rest1],Join[{El2+1},Rest2],z]
        ]);
C40[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n2]];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{n2,n2}];
         Hyp`m`F[Join[{El1-1},Rest1],Join[{El2-1},Rest2],z]+
         z*Hyp`m`p[El2-El1,1]/(Hyp`m`p[El2-1,1]*Hyp`m`p[El2,1])*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1},Rest1+1],Join[{El2+1},Rest2+1],z]
        ]);
C41[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n2]];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{n2,n2}];
         Hyp`m`F[Join[{El1+1},Rest1],Join[{El2+1},Rest2],z]-
         z*Hyp`m`p[El2-El1,1]/(Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1])*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+1},Rest1+1],Join[{El2+2},Rest2+1],z]
        ]);
C42[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n2]];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{n2,n2}];
         1/z/Hyp`m`p[El2-El1-1,1]*(Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1},Rest1-1],Join[{El2-1},Rest2-1],z]-
         1/z/Hyp`m`p[El2-El1-1,1]*(Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1-1},Rest1-1],Join[{El2-2},Rest2-1],z]
        ]);
C43[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n2]];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{n2,n2}];
         Hyp`m`F[Join[{El1-1},Rest1],Join[{El2+1},Rest2],z]+
         z*Hyp`m`p[El1+El2,1]/(Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1])*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1,El1+El2+1},Rest1+1],Join[{El2+2,El1+El2},Rest2+1],z]
        ]);
C44[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n2]];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{n2,n2}];
         Hyp`m`F[Join[{El1+1},Rest1],Join[{El2-1},Rest2],z]-
         z*Hyp`m`p[El1+El2,1]/(Hyp`m`p[El2-1,1]*Hyp`m`p[El2,1])*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+1,El1+El2+1},Rest1+1],Join[{El2+1,El1+El2},Rest2+1],z]
        ]);
C45[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest2},
         El1=List2[[n1]];
         El2=List2[[n2]];
         Rest2=Drop[List2,{Max[n1,n2],Max[n1,n2]}];
         Rest2=Drop[Rest2,{Min[n1,n2],Min[n1,n2]}];
         Hyp`m`p[El2-1,1]/Hyp`m`p[El2-El1,1]*Hyp`m`F[List1,Join[{El1,El2-1},Rest2],z]+
                Hyp`m`p[El1-1,1]/Hyp`m`p[El1-El2,1]*Hyp`m`F[List1,Join[{El1-1,El2},Rest2],z]
        ]);
C46[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest2},
         El1=List2[[n1]];
         El2=List2[[n2]];
         Rest2=Drop[List2,{Max[n1,n2],Max[n1,n2]}];
         Rest2=Drop[Rest2,{Min[n1,n2],Min[n1,n2]}];
         Hyp`m`p[El2-1,1]/Hyp`m`p[El1,1]*Hyp`m`F[List1,Join[{El1+1,El2-1},Rest2],z]+
                Hyp`m`p[El1+1-El2,1]/Hyp`m`p[El1,1]*Hyp`m`F[List1,Join[{El1+1,El2},Rest2],z]
        ]);
C49[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest2},
         El1=List2[[n1]];
         El2=List2[[n2]];
         Rest2=Drop[List2,{Max[n1,n2],Max[n1,n2]}];
         Rest2=Drop[Rest2,{Min[n1,n2],Min[n1,n2]}];
         Hyp`m`F[List1,Join[{El1+1,El2-1},Rest2],z]+
         z*Hyp`m`p[El2-El1-1,1]/(Hyp`m`p[El1,1]*Hyp`m`p[El1+1,1]*Hyp`m`p[El2-1,1]*Hyp`m`p[El2,1])*Apply[Times,Map[Hyp`m`p[#,1]&,List1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[List1+1,Join[{El1+2,El2+1},Rest2+1],z]
        ]);
C50[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest2},
         El1=List2[[n1]];
         El2=List2[[n2]];
         Rest2=Drop[List2,{Max[n1,n2],Max[n1,n2]}];
         Rest2=Drop[Rest2,{Min[n1,n2],Min[n1,n2]}];
         1/z*(Hyp`m`p[El1-2,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Hyp`m`p[El2-El1,1]/Apply[Times,Map[Hyp`m`p[#,1]&,List1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[List1-1,Join[{El1-2,El2-1},Rest2-1],z]-
         1/z*(Hyp`m`p[El1-2,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Hyp`m`p[El2-El1,1]/Apply[Times,Map[Hyp`m`p[#,1]&,List1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[List1-1,Join[{El1-1,El2-2},Rest2-1],z]
        ]);
C51[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest2},
         El1=List2[[n1]];
         El2=List2[[n2]];
         Rest2=Drop[List2,{Max[n1,n2],Max[n1,n2]}];
         Rest2=Drop[Rest2,{Min[n1,n2],Min[n1,n2]}];
         Hyp`m`F[List1,Join[{El1+1,El2+1},Rest2],z]+
         z*Hyp`m`p[El1+El2+1,1]/(Hyp`m`p[El1,1]*Hyp`m`p[El1+1,1]*Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1])*Apply[Times,Map[Hyp`m`p[#,1]&,List1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+El2+2},List1+1],Join[{El1+2,El2+2,El1+El2+1},Rest2+1],z]
        ]);
C52[n1_,n2_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1},
         El1=List2[[n1]];
         El2=List2[[n2]];
         Rest2=Drop[List2,{Max[n1,n2],Max[n1,n2]}];
         Rest2=Drop[Rest2,{Min[n1,n2],Min[n1,n2]}];
         Hyp`m`F[List1,Join[{El1-1,El2-1},Rest2],z]-
         z*Hyp`m`p[El1+El2-1,1]/(Hyp`m`p[El1-1,1]*Hyp`m`p[El1,1]*Hyp`m`p[El2-1,1]*Hyp`m`p[El2,1])*Apply[Times,Map[Hyp`m`p[#,1]&,List1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+El2},List1+1],Join[{El1+1,El2+1,El1+El2-1},Rest2+1],z]
        ]);

(*Three-term relations with three parameters*)
C53[n1_,n2_,n3_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,El3,Rest1},
         El1=List1[[n1]];
         El2=List1[[n2]];
         El3=List1[[n3]];
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El3-El2-1,1]*Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El2,1]*Hyp`m`p[El3-1,1])*
                Hyp`m`F[Join[{El1+1,El2,El3-1},Rest1],List2,z]+
         Hyp`m`p[El3-El1-1,1]*Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El2-El1,1]*Hyp`m`p[El1,1]*Hyp`m`p[El3-1,1])*
                Hyp`m`F[Join[{El1,El2+1,El3-1},Rest1],List2,z]
        ]);
C54[n1_,n2_,n3_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n2]];
         El3=List2[[n3]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{n3,n3}];
         Hyp`m`p[El3-El2,1]*Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El2,1]*Hyp`m`p[El3,1])*
                Hyp`m`F[Join[{El1+1,El2},Rest1],Join[{El3+1},Rest2],z]+
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El2-El1,1]*Hyp`m`p[El1,1]*Hyp`m`p[El3,1])*
                Hyp`m`F[Join[{El1,El2+1},Rest1],Join[{El3+1},Rest2],z]
        ]);
C55[n1_,n2_,n3_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n2]];
         El3=List2[[n3]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{n3,n3}];
         Hyp`m`p[El2+1-El1,1]*Hyp`m`p[El2,1]*Hyp`m`p[El3-1,1]/(Hyp`m`p[El2+1-El3,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El2,1])*
                Hyp`m`F[Join[{El1-1,El2},Rest1],Join[{El3-1},Rest2],z]+
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El2,1]*Hyp`m`p[El3-1,1]/(Hyp`m`p[El3-El2-1,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El3-1,1])*
                Hyp`m`F[Join[{El1-1,El2+1},Rest1],Join[{El3},Rest2],z]
        ]);
C56[n1_,n2_,n3_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n2]];
         El3=List2[[n3]];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Max[n2,n3],Max[n2,n3]}];
         Rest2=Drop[Rest2,{Min[n2,n3],Min[n2,n3]}];
         Hyp`m`p[El3+1-El2,1]*Hyp`m`p[El1,1]*Hyp`m`p[El2-1,1]/(Hyp`m`p[El1+1-El2,1]*Hyp`m`p[El2-1,1]*Hyp`m`p[El3,1])*
                Hyp`m`F[Join[{El1+1},Rest1],Join[{El2,El3+1},Rest2],z]+
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El1,1]*Hyp`m`p[El2-1,1]/(Hyp`m`p[El2-El1-1,1]*Hyp`m`p[El1,1]*Hyp`m`p[El3,1])*
                Hyp`m`F[Join[{El1},Rest1],Join[{El2-1,El3+1},Rest2],z]
        ]);
C57[n1_,n2_,n3_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n2]];
         El3=List2[[n3]];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Max[n2,n3],Max[n2,n3]}];
         Rest2=Drop[Rest2,{Min[n2,n3],Min[n2,n3]}];
         Hyp`m`p[El2-El1,1]*Hyp`m`p[El2-1,1]*Hyp`m`p[El3-1,1]/(Hyp`m`p[El2-El3,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El2-1,1])*
                Hyp`m`F[Join[{El1-1},Rest1],Join[{El2,El3-1},Rest2],z]+
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El2-1,1]*Hyp`m`p[El3-1,1]/(Hyp`m`p[El3-El2,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El3-1,1])*
                Hyp`m`F[Join[{El1-1},Rest1],Join[{El2-1,El3},Rest2],z]
        ]);
C58[n1_,n2_,n3_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,El3,Rest2},
         El1=List2[[n1]];
         El2=List2[[n2]];
         El3=List2[[n3]];
         Els=Sort[{n1,n2,n3}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El3+1-El2,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El2-1,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El2-1,1]*Hyp`m`p[El3,1])*
                Hyp`m`F[List1,Join[{El1-1,El2,El3+1},Rest2],z]+
         Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El2-1,1]/(Hyp`m`p[El2-El1,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El3,1])*
                Hyp`m`F[List1,Join[{El1,El2-1,El3+1},Rest2],z]
        ]);

(*Three-term relations with four parameters*)
C59[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n3]];
         El3=List1[[n3]]+List1[[n4]];
         Els=Sort[{n1,n2,n3,n4}];
         Rest1=Drop[List1,{Els[[4]],Els[[4]]}];
         Rest1=Drop[Rest1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2+1,El3+1-El2},Rest1],List2,z]+
         Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2,El3-El2},Rest1],List2,z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-2-List1[[n3]]-List1[[n4]]]===0);
C60[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n3]];
         El3=List1[[n3]]+List1[[n4]];
         Els=Sort[{n1,n2,n3,n4}];
         Rest1=Drop[List1,{Els[[4]],Els[[4]]}];
         Rest1=Drop[Rest1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2,El3-El2},Rest1],List2,z]-
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2+1,El3+1-El2},Rest1],List2,z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List1[[n3]]-List1[[n4]]]===0);
C61[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n3]];
         El3=List1[[n1]]+List1[[n2]]-1;
         Els=Sort[{n1,n2,n3,n4}];
         Rest1=Drop[List1,{Els[[4]],Els[[4]]}];
         Rest1=Drop[Rest1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{El1+1,El3-El1,El2+1,El3-El2},Rest1],List2,z]+
         Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{1+(El3)/2,El1,El3-El1,El2,El3-El2},Rest1],Join[{(El3)/2},List2],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List1[[n3]]-List1[[n4]]]===0);
C62[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n3]]-1;
         El3=List1[[n1]]+List1[[n2]];
         Els=Sort[{n1,n2,n3,n4}];
         Rest1=Drop[List1,{Els[[4]],Els[[4]]}];
         Rest1=Drop[Rest1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Hyp`m`F[Join[{El1+1,El3+1-El1,El2,El3-El2},Rest1],List2,z]+
         z*Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,List2]]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2+1,El3+1-El2,El3+2},Rest1+1],Join[{El3+1},List2+1],z]
        ]/;Factor[2+List1[[n1]]+List1[[n2]]-List1[[n3]]-List1[[n4]]]===0);
C63[n1_,n2_,n3_,n4_,d_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n3]];
         El3=List1[[n3]]+List1[[n4]];
         Els=Sort[{n1,n2,n3,n4}];
         Rest1=Drop[List1,{Els[[4]],Els[[4]]}];
         Rest1=Drop[Rest1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El1-d,1]*Hyp`m`p[El3-El1-d,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2+1,El3+1-El2},Rest1],List2,z]+
         Hyp`m`p[El2-El1,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[d,1]*Hyp`m`p[El3-d,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2,El3-El2,d+1,El3+1-d},Rest1],Join[{d,El3-d},List2],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-2-List1[[n3]]-List1[[n4]]]===0);
C64[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n3]];
         El3=List1[[n3]]+List2[[n4]]-1;
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n4,n4}];
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2+1},Rest1],Join[{El3-El2},Rest2],z]+
         Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2},Rest1],Join[{El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-1-List1[[n3]]-List2[[n4]]]===0);
C65[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n3]]-1;
         El3=List1[[n3]]+List2[[n4]]-1;
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n4,n4}];
         Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2},Rest1],Join[{El3+1-El2},Rest2],z]-
         Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2},Rest1],Join[{El3+1-El2},Rest2],z]
        ]/;Factor[1+List1[[n1]]+List1[[n2]]-List1[[n3]]-List2[[n4]]]===0);
C66[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n3]];
         El3=List1[[n3]]+List2[[n4]]-1;
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n4,n4}];
         Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2},Rest1],Join[{El3+1-El2},Rest2],z]-
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2+1},Rest1],Join[{El3-El2},Rest2],z]
        ]/;Factor[1+List1[[n1]]+List1[[n2]]-List1[[n3]]-List2[[n4]]]===0);
C67[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n3]];
         El3=List1[[n1]]+List1[[n2]]-1;
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n4,n4}];
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{El1+1,El3-El1,El2+1},Rest1],Join[{El3+1-El2},Rest2],z]+
         Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{1+(El3)/2,El1,El3-El1,El2},Rest1],Join[{(El3)/2,El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-1-List1[[n3]]-List2[[n4]]]===0);
C68[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n3]]-1;
         El3=List1[[n1]]+List1[[n2]]-1;
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n4,n4}];
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1]/(Hyp`m`p[El1,1]*Hyp`m`p[El2,1])*
                Hyp`m`F[Join[{El1,El3+1-El1,El2},Rest1],Join[{El3-El2},Rest2],z]-
         Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1]/(Hyp`m`p[El1,1]*Hyp`m`p[El2,1])*
                Hyp`m`F[Join[{1+(El3)/2,El1,El3-El1,El2},Rest1],Join[{(El3)/2,El3+1-El2},Rest2],z]
        ]/;Factor[1+List1[[n1]]+List1[[n2]]-List1[[n3]]-List2[[n4]]]===0);
C69[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n3]]-1;
         El3=List1[[n1]]+List1[[n2]];
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n4,n4}];
         Hyp`m`F[Join[{El1+1,El3+1-El1,El2},Rest1],Join[{El3+1-El2},Rest2],z]+
         z*Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1]/(Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1])*
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2+1,El3+2},Rest1+1],Join[{El3+2-El2,El3+1},Rest2+1],z]
        ]/;Factor[1+List1[[n1]]+List1[[n2]]-List1[[n3]]-List2[[n4]]]===0);
C70[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n3]];
         El3=List1[[n1]]+List1[[n2]]-2;
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n4,n4}];
         Hyp`m`F[Join[{El1,El3-El1,El2+1},Rest1],Join[{El3-El2},Rest2],z]-
         z*Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1]/(Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1])*
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2+1,El3+2},Rest1+1],Join[{El3+2-El2,El3+1},Rest2+1],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-1-List1[[n3]]-List2[[n4]]]===0);
C71[n1_,n2_,n3_,n4_,d_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n3]];
         El3=List1[[n3]]+List2[[n4]]-1;
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n4,n4}];
         Hyp`m`p[El1-d,1]*Hyp`m`p[El3-El1-d,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2+1},Rest1],Join[{El3-El2},Rest2],z]+
         Hyp`m`p[El2-El1,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[d,1]*Hyp`m`p[El3-d,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2,d+1,El3+1-d},Rest1],Join[{El3+1-El2,d,El3-d},Rest2],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-1-List1[[n3]]-List2[[n4]]]===0);
C72[n1_,n2_,n3_,n4_,d_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n3]]-1;
         El3=List1[[n3]]+List2[[n4]]-1;
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n4,n4}];
         Hyp`m`p[El2-d,1]*Hyp`m`p[El3-El2-d,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El1-d,1]/Hyp`m`p[El3-El1-d,1]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2},Rest1],Join[{El3+1-El2},Rest2],z]-
         Hyp`m`p[El2-El1,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`p[d,1]*Hyp`m`p[El3-d,1]/Hyp`m`p[El1-d,1]/Hyp`m`p[El3-El1-d,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2,d+1,El3+1-d},Rest1],Join[{El3+1-El2,d,El3-d},Rest2],z]
        ]/;Factor[1+List1[[n1]]+List1[[n2]]-List1[[n3]]-List2[[n4]]]===0);
C73[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n2]];
         Els=Sort[{n1,n2,n3}];
         Rest1=Drop[List1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n4,n4}];
         1/z/Hyp`m`p[El1+El2-1,1]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1,El2},Rest1-1],Rest2-1,z]-
         1/z/Hyp`m`p[El1+El2-1,1]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1-1,El2-1},Rest1-1],Rest2-1,z]
        ]/;Factor[List1[[n3]]-List1[[n1]]-List1[[n2]]]===0&&
           Factor[List2[[n4]]+1-List1[[n3]]]===0);
C74[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n2]];
         El3=List1[[n1]]+List2[[n3]]-1;
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1,El2+1},Rest1],Join[{El3+1-El1,El3-El2},Rest2],z]+
         Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1,El2},Rest1],Join[{El3+1-El1,El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List2[[n3]]-List1[[n2]]-List2[[n4]]]===0);
C75[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n2]];
         El3=List1[[n1]]+List2[[n3]]-1;
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[Join[{El1+1,El2},Rest1],Join[{El3-El1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[Join[{El1,El2+1},Rest1],Join[{El3+1-El1,El3-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List2[[n3]]-List1[[n2]]-List2[[n4]]]===0);
C76[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n2]];
         El3=List1[[n1]]+List2[[n3]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{El1+1,El2+1},Rest1],Join[{El3+1-El1,El3+1-El2},Rest2],z]+
         Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{1+(El3)/2,El1,El2},Rest1],Join[{(El3)/2,El3+1-El1,El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List2[[n3]]-List1[[n2]]-List2[[n4]]]===0);
C77[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n2]]-1;
         El3=List1[[n1]]+List2[[n3]]-2;
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1]/(Hyp`m`p[El1,1]*Hyp`m`p[El2,1])*
                Hyp`m`F[Join[{El1,El2},Rest1],Join[{El3-El1,El3-El2},Rest2],z]-
         Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1]/(Hyp`m`p[El1,1]*Hyp`m`p[El2,1])*
                Hyp`m`F[Join[{1+(El3)/2,El1,El2},Rest1],Join[{(El3)/2,El3+1-El1,El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List2[[n3]]-List1[[n2]]-List2[[n4]]]===0);
C78[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n2]]-1;
         El3=List1[[n1]]+List2[[n3]]-1;
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`F[Join[{El1+1,El2},Rest1],Join[{El3-El1,El3+1-El2},Rest2],z]+
         z*Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1])*
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+1,El2+1,El3+2},Rest1+1],Join[{El3+2-El1,El3+2-El2,El3+1},Rest2+1],z]
        ]/;Factor[List1[[n1]]+List2[[n3]]-List1[[n2]]-List2[[n4]]]===0);
C79[n1_,n2_,n3_,n4_,d_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n2]];
         El3=List1[[n1]]+List2[[n3]]-1;
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El1-d,1]*Hyp`m`p[El3-El1-d,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{El1,El2+1},Rest1],Join[{El3+1-El1,El3-El2},Rest2],z]+
         Hyp`m`p[El2-El1,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[d,1]*Hyp`m`p[El3-d,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{El1,El2,d+1,El3+1-d},Rest1],Join[{El3+1-El1,El3+1-El2,d,El3-d},Rest2],z]
        ]/;Factor[List1[[n1]]+List2[[n3]]-List1[[n2]]-List2[[n4]]]===0);
C80[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List2[[n3]]-1;
         El3=List1[[n1]]+List1[[n2]]-2;
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1,El3-El1},Rest1],Join[{El2,El3-El2},Rest2],z]+
         Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1,El3-El1},Rest1],Join[{El2+1,El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C81[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]];
         El3=List1[[n1]]+List1[[n2]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1+1,El3+1-El1},Rest1],Join[{El2+1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1,El3-El1},Rest1],Join[{El2+1,El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C82[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]]-1;
         El3=List1[[n1]]+List1[[n2]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[Join[{El1+1,El3+1-El1},Rest1],Join[{El2+1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[Join[{El1,El3-El1},Rest1],Join[{El2,El3-El2},Rest2],z]
        ]/;Factor[2+List1[[n1]]+List1[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C83[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]]-1;
         El3=List1[[n1]]+List1[[n2]]-1;
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{El1+1,El3-El1},Rest1],Join[{El2,El3+1-El2},Rest2],z]+
         Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{1+(El3)/2,El1,El3-El1},Rest1],Join[{(El3)/2,El2+1,El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C84[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]];
         El3=List1[[n1]]+List1[[n2]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`F[Join[{El1+1,El3+1-El1},Rest1],Join[{1+El2,El3+1-El2},Rest2],z]+
         z*Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1]/(Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1])*
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El3+2},Rest1+1],Join[{El2+2,El3+2-El2,El3+1},Rest2+1],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C85[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List2[[n3]]-1;
         El3=List1[[n1]]+List1[[n2]]-2;
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`F[Join[{El1,El3-El1},Rest1],Join[{El2,El3-El2},Rest2],z]-
         z*Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1]/(Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1])*
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El3+2},Rest1+1],Join[{El2+2,El3+2-El2,El3+1},Rest2+1],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C86[n1_,n2_,n3_,n4_,d_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List2[[n3]]-1;
         El3=List1[[n1]]+List1[[n2]]-2;
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El1-d,1]*Hyp`m`p[El3-El1-d,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{El1,El3-El1},Rest1],Join[{El2,El3-El2},Rest2],z]+
         Hyp`m`p[El2-El1,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[d,1]*Hyp`m`p[El3-d,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{El1,El3-El1,d+1,El3+1-d},Rest1],Join[{El2+1,El3+1-El2,d,El3-d},Rest2],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C87[n1_,n2_,n3_,n4_,d_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]];
         El3=List1[[n1]]+List1[[n2]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         Hyp`m`p[El2-d,1]*Hyp`m`p[El3-El2-d,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El1-d,1]/Hyp`m`p[El3-El1-d,1]*
                Hyp`m`F[Join[{El1+1,El3+1-El1},Rest1],Join[{El2+1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El2-El1,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`p[d,1]*Hyp`m`p[El3-d,1]/Hyp`m`p[El1-d,1]/Hyp`m`p[El3-El1-d,1]*
                Hyp`m`F[Join[{El1,El3-El1,d+1,El3+1-d},Rest1],Join[{El2+1,El3+1-El2,d,El3-d},Rest2],z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C88[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{El1,El2,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Max[n3,n4],Max[n3,n4]}];
         Rest2=Drop[Rest2,{Min[n3,n4],Min[n3,n4]}];
         1/z/Hyp`m`p[El1+El2-2,1]*(Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1},Rest1-1],Join[{El2-2},Rest2-1],z]-
         1/z/Hyp`m`p[El1+El2-2,1]*(Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1-1},Rest1-1],Join[{El2-1},Rest2-1],z]
        ]/;Factor[List1[[n1]]+List2[[n3]]-1-List1[[n2]]]===0&&
           Factor[List2[[n4]]+1-List1[[n2]]]===0);
C89[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List2[[n3]]-1;
         El3=List1[[n1]]+List2[[n2]]-1;
         Els=Sort[{n2,n3,n4}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1},Rest1],Join[{El3+1-El1,El2,El3-El2},Rest2],z]+
         Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1},Rest1],Join[{El3+1-El1,El2+1,El3+1-El2},Rest2],z]
        ]/;Factor[1+List1[[n1]]+List2[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C90[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]];
         El3=List1[[n1]]+List2[[n2]]-1;
         Els=Sort[{n2,n3,n4}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1+1},Rest1],Join[{El3-El1,El2+1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1},Rest1],Join[{El3+1-El1,El2+1,El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List2[[n2]]-1-List2[[n3]]-List2[[n4]]]===0);
C91[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]]-1;
         El3=List1[[n1]]+List2[[n2]]-1;
         Els=Sort[{n2,n3,n4}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[Join[{El1+1},Rest1],Join[{El3-El1,El2+1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[Join[{El1},Rest1],Join[{El3+1-El1,El2,El3-El2},Rest2],z]
        ]/;Factor[1+List1[[n1]]+List2[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C92[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]]-1;
         El3=List1[[n1]]+List2[[n2]];
         Els=Sort[{n2,n3,n4}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{El1+1},Rest1],Join[{El3-El1+1,El2,El3+1-El2},Rest2],z]+
         Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{1+(El3)/2,El1},Rest1],Join[{(El3)/2,El3-El1+1,El2+1,El3+1-El2},Rest2],z]
        ]/;Factor[1+List1[[n1]]+List2[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C93[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List2[[n3]];
         El3=List1[[n1]]+List2[[n2]]-2;
         Els=Sort[{n2,n3,n4}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1]/(Hyp`m`p[El1,1]*Hyp`m`p[El2,1])*
                Hyp`m`F[Join[{El1},Rest1],Join[{El3-El1,El2+1,El3-El2},Rest2],z]-
         Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1]/(Hyp`m`p[El1,1]*Hyp`m`p[El2,1])*
                Hyp`m`F[Join[{1+(El3)/2,El1},Rest1],Join[{(El3)/2,El3+1-El1,El2+1,El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List2[[n2]]-1-List2[[n3]]-List2[[n4]]]===0);
C94[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]];
         El3=List1[[n1]]+List2[[n2]]-1;
         Els=Sort[{n2,n3,n4}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`F[Join[{El1+1},Rest1],Join[{El3-El1,1+El2,El3+1-El2},Rest2],z]+
         z*Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1])*
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+1,El3+2},Rest1+1],Join[{El3+2-El1,El2+2,El3+2-El2,El3+1},Rest2+1],z]
        ]/;Factor[List1[[n1]]+List2[[n2]]-1-List2[[n3]]-List2[[n4]]]===0);
C95[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List2[[n3]]-1;
         El3=List1[[n1]]+List2[[n2]]-1;
         Els=Sort[{n2,n3,n4}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`F[Join[{El1},Rest1],Join[{El3+1-El1,El2,El3-El2},Rest2],z]-
         z*Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1])*
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El1+1,El3+2},Rest1+1],Join[{El3+2-El1,El2+2,El3+2-El2,El3+1},Rest2+1],z]
        ]/;Factor[1+List1[[n1]]+List2[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C96[n1_,n2_,n3_,n4_,d_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List2[[n3]]-1;
         El3=List1[[n1]]+List2[[n2]]-1;
         Els=Sort[{n2,n3,n4}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El1-d,1]*Hyp`m`p[El3-El1-d,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{El1},Rest1],Join[{El3+1-El1,El2,El3-El2},Rest2],z]+
         Hyp`m`p[El2-El1,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[d,1]*Hyp`m`p[El3-d,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{El1,d+1,El3+1-d},Rest1],Join[{El3+1-El1,El2+1,El3+1-El2,d,El3-d},Rest2],z]
        ]/;Factor[1+List1[[n1]]+List2[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C97[n1_,n2_,n3_,n4_,d_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n3]];
         El3=List1[[n1]]+List2[[n2]]-1;
         Els=Sort[{n2,n3,n4}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El2-d,1]*Hyp`m`p[El3-El2-d,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El1-d,1]/Hyp`m`p[El3-El1-d,1]*
                Hyp`m`F[Join[{El1+1},Rest1],Join[{El3-El1,El2+1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El2-El1,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El2,1]/Hyp`m`p[El3-El2,1]*
                Hyp`m`p[d,1]*Hyp`m`p[El3-d,1]/Hyp`m`p[El1-d,1]/Hyp`m`p[El3-El1-d,1]*
                Hyp`m`F[Join[{El1,d+1,El3+1-d},Rest1],Join[{El3+1-El1,El2+1,El3+1-El2,d,El3-d},Rest2],z]
        ]/;Factor[List1[[n1]]+List2[[n2]]-1-List2[[n3]]-List2[[n4]]]===0);
C98[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,Rest1,Rest2},
         El1=List2[[n2]];
         El2=List2[[n3]];
         Rest1=Drop[List1,{n1,n1}];
         Els=Sort[{n2,n3,n4}];
         Rest2=Drop[List2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         1/z*(Hyp`m`p[El1-2,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Hyp`m`p[El1+El2-3,1]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Rest1-1,Join[{El1-2,El2-2},Rest2-1],z]-
         1/z*(Hyp`m`p[El1-2,1]*Hyp`m`p[El1-1,1]*Hyp`m`p[El2-2,1]*Hyp`m`p[El2-1,1])/Hyp`m`p[El1+El2-3,1]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Rest1-1,Join[{El1-1,El2-1},Rest2-1],z]
        ]/;Factor[List1[[n1]]+2-List2[[n2]]-List2[[n3]]]===0&&
           Factor[List2[[n4]]+1-List1[[n1]]]===0);
C99[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List2[[n1]];
         El2=List2[[n3]]-1;
         El3=List2[[n1]]+List2[[n2]];
         Els=Sort[{n1,n2,n3,n4}];
         Rest2=Drop[List2,{Els[[4]],Els[[4]]}];
         Rest2=Drop[Rest2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[List1,Join[{El1+1,El3+1-El1,El2,El3-El2},Rest2],z]+
         Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`F[List1,Join[{El1+1,El3+1-El1,El2+1,El3+1-El2},Rest2],z]
        ]/;Factor[2+List2[[n1]]+List2[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C100[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List2[[n1]]-1;
         El2=List2[[n3]]-1;
         El3=List2[[n1]]+List2[[n2]]-2;
         Els=Sort[{n1,n2,n3,n4}];
         Rest2=Drop[List2,{Els[[4]],Els[[4]]}];
         Rest2=Drop[Rest2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[List1,Join[{El1,El3-El1,El2+1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El1-El2,1]/Hyp`m`p[El3-El1-El2,1]*
                Hyp`m`F[List1,Join[{El1+1,El3+1-El1,El2,El3-El2},Rest2],z]
        ]/;Factor[List2[[n1]]+List2[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C101[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List2[[n1]]-1;
         El2=List2[[n3]]-1;
         El3=List2[[n1]]+List2[[n2]]-1;
         Els=Sort[{n1,n2,n3,n4}];
         Rest1=List1;
         Rest2=Drop[List2,{Els[[4]],Els[[4]]}];
         Rest2=Drop[Rest2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Rest1,Join[{El1,El3-El1+1,El2,El3+1-El2},Rest2],z]+
         Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1]/(Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1])*
                Hyp`m`F[Join[{1+(El3)/2},Rest1],Join[{(El3)/2,El1+1,El3-El1+1,El2+1,El3+1-El2},Rest2],z]
        ]/;Factor[List2[[n1]]+List2[[n2]]-List2[[n3]]-List2[[n4]]]===0);
C102[n1_,n2_,n3_,n4_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List2[[n1]]-1;
         El2=List2[[n3]];
         El3=List2[[n1]]+List2[[n2]]-2;
         Els=Sort[{n1,n2,n3,n4}];
         Rest1=List1;
         Rest2=Drop[List2,{Els[[4]],Els[[4]]}];
         Rest2=Drop[Rest2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`F[Rest1,Join[{El1,El3-El1,1+El2,El3+1-El2},Rest2],z]+
         z*Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1]/(Hyp`m`p[El1,1]*Hyp`m`p[El1+1,1]*Hyp`m`p[El3-El1,1]*Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1])*
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1]]/Apply[Times,Map[Hyp`m`p[#,1]&,Rest2]]*
                Hyp`m`F[Join[{El3+2},Rest1+1],Join[{El1+2,El3+2-El1,El2+2,El3+2-El2,El3+1},Rest2+1],z]
        ]/;Factor[List2[[n1]]+List2[[n2]]-2-List2[[n3]]-List2[[n4]]]===0);
C103[n1_,n2_,n3_,n4_,d_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List2[[n1]];
         El2=List2[[n3]]-1;
         El3=List2[[n1]]+List2[[n2]];
         Els=Sort[{n1,n2,n3,n4}];
         Rest2=Drop[List2,{Els[[4]],Els[[4]]}];
         Rest2=Drop[Rest2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         Hyp`m`p[El1-d,1]*Hyp`m`p[El3-El1-d,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[List1,Join[{El1+1,El3+1-El1,El2,El3-El2},Rest2],z]+
         Hyp`m`p[El2-El1,1]*Hyp`m`p[El3-El1-El2,1]/Hyp`m`p[El1,1]/Hyp`m`p[El3-El1,1]*
                Hyp`m`p[d,1]*Hyp`m`p[El3-d,1]/Hyp`m`p[El2-d,1]/Hyp`m`p[El3-El2-d,1]*
                Hyp`m`F[Join[{d+1,El3+1-d},List1],Join[{El1+1,El3+1-El1,El2+1,El3+1-El2,d,El3-d},Rest2],z]
        ]/;Factor[2+List2[[n1]]+List2[[n2]]-List2[[n3]]-List2[[n4]]]===0);


(*Three-term relations with six parameters*)
C104[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n3]]-1;
         El3=List1[[n1]]+List1[[n2]]-2;
         Els=Sort[{n1,n2,n3,n4,n5}];
         Rest1=Drop[List1,{Els[[5]],Els[[5]]}];
         Rest1=Drop[Rest1,{Els[[4]],Els[[4]]}];
         Rest1=Drop[Rest1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n6,n6}];
         1/z/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1,El3-El1,El2+1,El3+1-El2},Rest1-1],Rest2-1,z]-
         1/z/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2,El3-El2},Rest1-1],Rest2-1,z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List1[[n3]]-List1[[n4]]]===0&&
                Factor[List1[[n1]]+List1[[n2]]-List1[[n5]]]===0&&
                Factor[List1[[n5]]-1-List2[[n6]]]===0);
C105[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n3]]-1;
         El3=List1[[n1]]+List1[[n2]]-2;
         Els=Sort[{n1,n2,n3,n4}];
         Rest1=Drop[List1,{Els[[4]],Els[[4]]}];
         Rest1=Drop[Rest1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{Max[n5,n6],Max[n5,n6]}];
         Rest2=Drop[Rest2,{Min[n5,n6],Min[n5,n6]}];
         1/z*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1,El3-El1,El2+1},Rest1-1],Join[{El3-El2},Rest2-1],z]-
         1/z*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2},Rest1-1],Join[{El3+1-El2},Rest2-1],z]
        ]/;Factor[1+List1[[n1]]+List1[[n2]]-List1[[n3]]-List2[[n5]]]===0&&
                Factor[List1[[n1]]+List1[[n2]]-List1[[n4]]]===0&&
                Factor[List1[[n4]]-1-List2[[n6]]]===0);
C106[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List1[[n2]]-1;
         El3=List1[[n3]]-2;
         Els1=Sort[{n1,n2,n3}];
         Els2=Sort[{n4,n5,n6}];
         Rest1=Drop[List1,{Els1[[3]],Els1[[3]]}];
         Rest1=Drop[Rest1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         1/z*Hyp`m`p[El3-El1,1]*Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1,El2+1},Rest1-1],Join[{El3+1-El1,El3-El2},Rest2-1],z]-
         1/z*Hyp`m`p[El3-El1,1]*Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1+1,El2},Rest1-1],Join[{El3-El1,El3+1-El2},Rest2-1],z]
        ]/;Factor[List1[[n1]]+List2[[n4]]-List1[[n2]]-List2[[n5]]]===0&&
                Factor[List1[[n1]]+List2[[n4]]-1-List1[[n3]]]===0&&
                Factor[List1[[n3]]-1-List2[[n6]]]===0);
C107[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List2[[n4]]-2;
         El3=List1[[n1]]+List1[[n2]]-2;
         Els1=Sort[{n1,n2,n3}];
         Els2=Sort[{n4,n5,n6}];
         Rest1=Drop[List1,{Els1[[3]],Els1[[3]]}];
         Rest1=Drop[Rest1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         1/z*Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1,El3-El1},Rest1-1],Join[{El2,El3-El2},Rest2-1],z]-
         1/z*Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1+1,El3+1-El1},Rest1-1],Join[{El2+1,El3+1-El2},Rest2-1],z]
        ]/;Factor[2+List1[[n1]]+List1[[n2]]-List2[[n4]]-List2[[n5]]]===0&&
                Factor[List1[[n1]]+List1[[n2]]-List1[[n3]]]===0&&
                Factor[List1[[n3]]-1-List2[[n6]]]===0);
C108[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]]-1;
         El2=List2[[n4]]-2;
         El3=List1[[n1]]+List2[[n3]]-3;
         Els=Sort[{n3,n4,n5,n6}];
         Rest1=Drop[List1,{Max[n1,n2],Max[n1,n2]}];
         Rest1=Drop[Rest1,{Min[n1,n2],Min[n1,n2]}];
         Rest2=Drop[List2,{Els[[4]],Els[[4]]}];
         Rest2=Drop[Rest2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         1/z*Hyp`m`p[El3-El1,1]*Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1},Rest1-1],Join[{El3+1-El1,El2,El3-El2},Rest2-1],z]-
         1/z*Hyp`m`p[El3-El1,1]*Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Join[{El1+1},Rest1-1],Join[{El3-El1,El2+1,El3+1-El2},Rest2-1],z]
        ]/;Factor[1+List1[[n1]]+List2[[n3]]-List2[[n4]]-List2[[n5]]]===0&&
                Factor[List1[[n1]]+List2[[n3]]-1-List1[[n2]]]===0&&
                Factor[List1[[n2]]-1-List2[[n6]]]===0);
C109[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List2[[n2]]-2;
         El2=List2[[n4]]-2;
         El3=List2[[n2]]+List2[[n3]]-4;
         Els=Sort[{n2,n3,n4,n5,n6}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els[[5]],Els[[5]]}];
         Rest2=Drop[Rest2,{Els[[4]],Els[[4]]}];
         Rest2=Drop[Rest2,{Els[[3]],Els[[3]]}];
         Rest2=Drop[Rest2,{Els[[2]],Els[[2]]}];
         Rest2=Drop[Rest2,{Els[[1]],Els[[1]]}];
         1/z*Hyp`m`p[El1,1]*Hyp`m`p[El1+1,1]*Hyp`m`p[El3-El1,1]*Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Rest1-1,Join[{El1+1,El3+1-El1,El2,El3-El2},Rest2-1],z]-
         1/z*Hyp`m`p[El1,1]*Hyp`m`p[El1+1,1]*Hyp`m`p[El3-El1,1]*Hyp`m`p[El3+1-El1,1]*Hyp`m`p[El2,1]*Hyp`m`p[El2+1,1]*Hyp`m`p[El3-El2,1]*Hyp`m`p[El3+1-El2,1]/(Hyp`m`p[El1-El2,1]*Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El3+1,1])/
                Apply[Times,Map[Hyp`m`p[#,1]&,Rest1-1]]*Apply[Times,Map[Hyp`m`p[#,1]&,Rest2-1]]*
                Hyp`m`F[Rest1-1,Join[{El1,El3-El1,El2+1,El3+1-El2},Rest2-1],z]
        ]/;Factor[List2[[n2]]+List2[[n3]]-List2[[n4]]-List2[[n5]]]===0&&
                Factor[List2[[n2]]+List2[[n3]]-2-List1[[n1]]]===0&&
                Factor[List1[[n1]]-1-List2[[n6]]]===0);
C110[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n2]];
         El2=List1[[n4]];
         El3=List1[[n2]]+List1[[n3]];
         Els=Sort[{n1,n2,n3,n4,n5}];
         Rest1=Drop[List1,{Els[[5]],Els[[5]]}];
         Rest1=Drop[Rest1,{Els[[4]],Els[[4]]}];
         Rest1=Drop[Rest1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{n6,n6}];
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Join[{El1,El3+1-El1,El2,El3+1-El2},Rest1],Rest2,z]-
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Join[{El1+1,El3-El1,El2+1,El3-El2},Rest1],Rest2,z]
        ]/;Factor[List1[[n2]]+List1[[n3]]-List1[[n4]]-List1[[n5]]]===0&&
                Factor[List1[[n2]]+List1[[n3]]-List2[[n6]]*2]===0&&
                Factor[List1[[n1]]-1-List2[[n6]]]===0);
C112[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n2]];
         El2=List1[[n4]];
         El3=List1[[n2]]+List1[[n3]];
         Els1=Sort[{n1,n2,n3,n4}];
         Els2=Sort[{n5,n6}];
         Rest1=Drop[List1,{Els1[[4]],Els1[[4]]}];
         Rest1=Drop[Rest1,{Els1[[3]],Els1[[3]]}];
         Rest1=Drop[Rest1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Join[{El1,El3+1-El1,El2},Rest1],Join[{El3-El2},Rest2],z]-
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Join[{El1+1,El3-El1,El2+1},Rest1],Join[{El3+1-El2},Rest2],z]
        ]/;Factor[1+List1[[n2]]+List1[[n3]]-List1[[n4]]-List2[[n6]]]===0&&
                Factor[List1[[n2]]+List1[[n3]]-List2[[n5]]*2]===0&&
                Factor[List1[[n1]]-1-List2[[n5]]]===0);
C114[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n2]];
         El2=List1[[n3]];
         El3=List1[[n2]]+List2[[n5]]-1;
         Els1=Sort[{n1,n2,n3}];
         Els2=Sort[{n4,n5,n6}];
         Rest1=Drop[List1,{Els1[[3]],Els1[[3]]}];
         Rest1=Drop[Rest1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Join[{El1,El2},Rest1],Join[{El3-El1,El3-El2},Rest2],z]-
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Join[{El1+1,El2+1},Rest1],Join[{El3+1-El1,El3+1-El2},Rest2],z]
        ]/;Factor[List1[[n2]]+List2[[n5]]-List1[[n3]]-List2[[n6]]]===0&&
                Factor[List1[[n2]]+List2[[n5]]-1-List2[[n4]]*2]===0&&
                Factor[List1[[n1]]-1-List2[[n4]]]===0);
C115[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n2]];
         El2=List2[[n5]]-1;
         El3=List1[[n2]]+List1[[n3]];
         Els1=Sort[{n1,n2,n3}];
         Els2=Sort[{n4,n5,n6}];
         Rest1=Drop[List1,{Els1[[3]],Els1[[3]]}];
         Rest1=Drop[Rest1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Join[{El1,El3+1-El1},Rest1],Join[{El2+1,El3-El2},Rest2],z]-
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Join[{El1+1,El3-El1},Rest1],Join[{El2,El3+1-El2},Rest2],z]
        ]/;Factor[2+List1[[n2]]+List1[[n3]]-List2[[n5]]-List2[[n6]]]===0&&
                Factor[List1[[n2]]+List1[[n3]]-List2[[n4]]*2]===0&&
                Factor[List1[[n1]]-1-List2[[n4]]]===0);
C118[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n2]];
         El2=List2[[n5]]-1;
         El3=List1[[n2]]+List2[[n4]]-1;
         Els1=Sort[{n1,n2}];
         Els2=Sort[{n3,n4,n5,n6}];
         Rest1=Drop[List1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[4]],Els2[[4]]}];
         Rest2=Drop[Rest2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Join[{El1},Rest1],Join[{El3-El1,El2+1,El3-El2},Rest2],z]-
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Join[{El1+1},Rest1],Join[{El3+1-El1,El2,El3+1-El2},Rest2],z]
        ]/;Factor[1+List1[[n2]]+List2[[n4]]-List2[[n5]]-List2[[n6]]]===0&&
                Factor[List1[[n2]]+List2[[n4]]-1-List2[[n3]]*2]===0&&
                Factor[List1[[n1]]-1-List2[[n3]]]===0);
C120[n1_,n2_,n3_,n4_,n5_,n6_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List2[[n3]]-1;
         El2=List2[[n5]]-1;
         El3=List2[[n3]]+List2[[n4]]-2;
         Els2=Sort[{n2,n3,n4,n5,n6}];
         Rest1=Drop[List1,{n1,n1}];
         Rest2=Drop[List2,{Els2[[5]],Els2[[5]]}];
         Rest2=Drop[Rest2,{Els2[[4]],Els2[[4]]}];
         Rest2=Drop[Rest2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         Hyp`m`p[El3-El1,1]*Hyp`m`p[El3-El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Rest1,Join[{El1+1,El3-El1,El2+1,El3-El2},Rest2],z]-
         Hyp`m`p[El1,1]*Hyp`m`p[El2,1]/(Hyp`m`p[El3,1]*Hyp`m`p[El3-El1-El2,1])*
                Hyp`m`F[Rest1,Join[{El1,El3+1-El1,El2,El3+1-El2},Rest2],z]
        ]/;Factor[List2[[n3]]+List2[[n4]]-List2[[n5]]-List2[[n6]]]===0&&
                Factor[List2[[n3]]+List2[[n4]]-2-List2[[n2]]*2]===0&&
                Factor[List1[[n1]]-1-List2[[n2]]]===0);


(*Three-term relations with eight parameters*)
C111[n1_,n2_,n3_,n4_,n5_,n6_,n7_,n8_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els,El1,El2,El3,El4,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n3]];
         El3=List1[[n3]]+List1[[n4]];
         El4=List1[[n5]]-1;
         Els=Sort[{n1,n2,n3,n4,n5,n6}];
         Rest1=Drop[List1,{Els[[6]],Els[[6]]}];
         Rest1=Drop[Rest1,{Els[[5]],Els[[5]]}];
         Rest1=Drop[Rest1,{Els[[4]],Els[[4]]}];
         Rest1=Drop[Rest1,{Els[[3]],Els[[3]]}];
         Rest1=Drop[Rest1,{Els[[2]],Els[[2]]}];
         Rest1=Drop[Rest1,{Els[[1]],Els[[1]]}];
         Rest2=Drop[List2,{Max[n7,n8],Max[n7,n8]}];
         Rest2=Drop[Rest2,{Min[n7,n8],Min[n7,n8]}];
         Hyp`m`p[El2-El4,1]*Hyp`m`p[El3-El2-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2,El3-El2},Rest1],Rest2,z]-
         Hyp`m`p[El1-El4,1]*Hyp`m`p[El3-El1-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2+1,El3+1-El2},Rest1],Rest2,z]
        ]/;Factor[List1[[n1]]+List1[[n2]]-List1[[n3]]-List1[[n4]]]===0&&
                Factor[List1[[n5]]-1-List2[[n7]]]===0&&
                Factor[List1[[n6]]-1-List2[[n8]]]===0&&
                Factor[List1[[n1]]+List1[[n2]]-List2[[n7]]-List2[[n8]]]===0);
C113[n1_,n2_,n3_,n4_,n5_,n6_,n7_,n8_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n3]];
         El3=List1[[n3]]+List2[[n6]]-1;
         El4=List1[[n4]]-1;
         Els1=Sort[{n1,n2,n3,n4,n5}];
         Els2=Sort[{n6,n7,n8}];
         Rest1=Drop[List1,{Els1[[5]],Els1[[5]]}];
         Rest1=Drop[Rest1,{Els1[[4]],Els1[[4]]}];
         Rest1=Drop[Rest1,{Els1[[3]],Els1[[3]]}];
         Rest1=Drop[Rest1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         Hyp`m`p[El2-El4,1]*Hyp`m`p[El3-El2-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1+1,El3+1-El1,El2},Rest1],Join[{El3+1-El2},Rest2],z]-
         Hyp`m`p[El1-El4,1]*Hyp`m`p[El3-El1-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1,El3-El1,El2+1},Rest1],Join[{El3-El2},Rest2],z]
        ]/;Factor[1+List1[[n1]]+List1[[n2]]-List1[[n3]]-List2[[n6]]]===0&&
                Factor[List1[[n4]]-1-List2[[n7]]]===0&&
                Factor[List1[[n5]]-1-List2[[n8]]]===0&&
                Factor[List1[[n1]]+List1[[n2]]-List2[[n7]]-List2[[n8]]]===0);
C116[n1_,n2_,n3_,n4_,n5_,n6_,n7_,n8_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List1[[n2]];
         El3=List1[[n1]]+List2[[n5]]-1;
         El4=List1[[n3]]-1;
         Els1=Sort[{n1,n2,n3,n4}];
         Els2=Sort[{n5,n6,n7,n8}];
         Rest1=Drop[List1,{Els1[[4]],Els1[[4]]}];
         Rest1=Drop[Rest1,{Els1[[3]],Els1[[3]]}];
         Rest1=Drop[Rest1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[4]],Els2[[4]]}];
         Rest2=Drop[Rest2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         Hyp`m`p[El2-El4,1]*Hyp`m`p[El3-El2-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1+1,El2},Rest1],Join[{El3-El1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El1-El4,1]*Hyp`m`p[El3-El1-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1,El2+1},Rest1],Join[{El3+1-El1,El3-El2},Rest2],z]
        ]/;Factor[List1[[n1]]+List2[[n5]]-List1[[n2]]-List2[[n6]]]===0&&
                Factor[List1[[n3]]-1-List2[[n7]]]===0&&
                Factor[List1[[n4]]-1-List2[[n8]]]===0&&
                Factor[List1[[n1]]+List2[[n5]]-1-List2[[n7]]-List2[[n8]]]===0);
C117[n1_,n2_,n3_,n4_,n5_,n6_,n7_,n8_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n5]]-1;
         El3=List1[[n1]]+List1[[n2]];
         El4=List1[[n3]]-1;
         Els1=Sort[{n1,n2,n3,n4}];
         Els2=Sort[{n5,n6,n7,n8}];
         Rest1=Drop[List1,{Els1[[4]],Els1[[4]]}];
         Rest1=Drop[Rest1,{Els1[[3]],Els1[[3]]}];
         Rest1=Drop[Rest1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[4]],Els2[[4]]}];
         Rest2=Drop[Rest2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         Hyp`m`p[El2-El4,1]*Hyp`m`p[El3-El2-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1+1,El3+1-El1},Rest1],Join[{El2+1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El1-El4,1]*Hyp`m`p[El3-El1-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1,El3-El1},Rest1],Join[{El2,El3-El2},Rest2],z]
        ]/;Factor[2+List1[[n1]]+List1[[n2]]-List2[[n5]]-List2[[n6]]]===0&&
                Factor[List1[[n3]]-1-List2[[n7]]]===0&&
                Factor[List1[[n4]]-1-List2[[n8]]]===0&&
                Factor[List1[[n1]]+List1[[n2]]-List2[[n7]]-List2[[n8]]]===0);
C119[n1_,n2_,n3_,n4_,n5_,n6_,n7_,n8_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List1[[n1]];
         El2=List2[[n5]]-1;
         El3=List1[[n1]]+List2[[n4]]-1;
         El4=List1[[n2]]-1;
         Els1=Sort[{n1,n2,n3}];
         Els2=Sort[{n4,n5,n6,n7,n8}];
         Rest1=Drop[List1,{Els1[[3]],Els1[[3]]}];
         Rest1=Drop[Rest1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[5]],Els2[[5]]}];
         Rest2=Drop[Rest2,{Els2[[4]],Els2[[4]]}];
         Rest2=Drop[Rest2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         Hyp`m`p[El2-El4,1]*Hyp`m`p[El3-El2-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Join[{El1+1},Rest1],Join[{El3-El1,El2+1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El1-El4,1]*Hyp`m`p[El3-El1-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Join[{El1},Rest1],Join[{El3+1-El1,El2,El3-El2},Rest2],z]
        ]/;Factor[1+List1[[n1]]+List2[[n4]]-List2[[n5]]-List2[[n6]]]===0&&
                Factor[List1[[n2]]-1-List2[[n7]]]===0&&
                Factor[List1[[n3]]-1-List2[[n8]]]===0&&
                Factor[List1[[n1]]+List2[[n4]]-1-List2[[n7]]-List2[[n8]]]===0);
C121[n1_,n2_,n3_,n4_,n5_,n6_,n7_,n8_]:=
   (Hyp`m`F[List1_List,List2_List,z_]:>
        Module[{Els1,Els2,El1,El2,El3,Rest1,Rest2},
         El1=List2[[n3]]-1;
         El2=List2[[n5]]-1;
         El3=List2[[n3]]+List2[[n4]]-2;
         El4=List1[[n1]]-1;
         Els1=Sort[{n1,n2}];
         Els2=Sort[{n3,n4,n5,n6,n7,n8}];
         Rest1=Drop[List1,{Els1[[2]],Els1[[2]]}];
         Rest1=Drop[Rest1,{Els1[[1]],Els1[[1]]}];
         Rest2=Drop[List2,{Els2[[6]],Els2[[6]]}];
         Rest2=Drop[Rest2,{Els2[[5]],Els2[[5]]}];
         Rest2=Drop[Rest2,{Els2[[4]],Els2[[4]]}];
         Rest2=Drop[Rest2,{Els2[[3]],Els2[[3]]}];
         Rest2=Drop[Rest2,{Els2[[2]],Els2[[2]]}];
         Rest2=Drop[Rest2,{Els2[[1]],Els2[[1]]}];
         Hyp`m`p[El2-El4,1]*Hyp`m`p[El3-El2-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El1,1]*Hyp`m`p[El3-El1,1]*
                Hyp`m`F[Rest1,Join[{El1,El3-El1,El2+1,El3+1-El2},Rest2],z]-
         Hyp`m`p[El1-El4,1]*Hyp`m`p[El3-El1-El4,1]/Hyp`m`p[El4,1]/Hyp`m`p[El3-El4,1]/
                Hyp`m`p[El2-El1,1]/Hyp`m`p[El3-El1-El2,1]*Hyp`m`p[El2,1]*Hyp`m`p[El3-El2,1]*
                Hyp`m`F[Rest1,Join[{El1+1,El3+1-El1,El2,El3-El2},Rest2],z]
        ]/;Factor[List2[[n3]]+List2[[n4]]-List2[[n5]]-List2[[n6]]]===0&&
                Factor[List1[[n1]]-1-List2[[n7]]]===0&&
                Factor[List1[[n2]]-1-List2[[n8]]]===0&&
                Factor[List2[[n3]]+List2[[n4]]-2-List2[[n7]]-List2[[n8]]]===0);




End[]

Protect[
C01,
C02,
C14,
C15,
C16,
C17,
C18,
C19,
C20,
C21,
C22,
C23,
C24,
C25,
C26,
C27,
C28,
C29,
C30,
C31,
C32,
C33,
C34,
C35,
C36,
C37,
C38,
C39,
C40,
C41,
C42,
C43,
C44,
C45,
C46,
C47,
C48,
C49,
C50,
C51,
C52,
C53,
C54,
C55,
C56,
C57,
C58,
C59,
C60,
C61,
C62,
C63,
C64,
C65,
C66,
C67,
C68,
C69,
C70,
C71,
C72,
C73,
C74,
C75,
C76,
C77,
C78,
C79,
C80,
C81,
C82,
C83,
C84,
C85,
C86,
C87,
C88,
C89,
C90,
C91,
C92,
C93,
C94,
C95,
C96,
C97,
C98,
C99,
C100,
C101,
C102,
C103,
C104,
C105,
C106,
C107,
C108,
C109,
C110,
C111,
C112,
C113,
C114,
C115,
C116,
C117,
C118,
C119,
C120,
C121
]
EndPackage[]

If[$VersionNumber>=2.,$Messages=OutputStream["stdout",1],$Messages={"stdout"}];
If[$VersionNumber>=5.,$Messages={OutputStream["stdout",1]},Null];


