var d,l,v1,v2:int64;
begin
  read(d,l,v1,v2);
  write((l-d)/(v1+v2):0:10);
end.

var
	n, l, r, k, l2, r1, r2: longint;
	a, b: array of integer;

begin

	readln(n, l, r, k);
	writeln((l-n) / (r+k));

end.

var
  d,l,v1,v2:integer;
begin
  read(d,L,v1,v2);
  write((L-d)/(v1+v2));
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
    var
       d,l,v1,v2:integer;
begin
 readln(d,l,v1,v2);
 writeln((l-d)/(v1+v2):1:6);
end.

program k;
var v1,v2,l,d:longint; u:real;
{procedure qs(l,r:longint);
var i,j,x,y:longint;
begin
i:=l; j:=r;
x:=a[(l+r) div 2];
repeat
 while a[i]<x do inc(i);
 while a[j]>x do dec(j);
 if i<=j then
 begin
 y:=a[i]; a[i]:=a[j]; a[j]:=y; inc(i); dec(j);
 end;
until i>j;
if l<j then qs(l,j);
if i<r then qs(i,r);
end;}
begin
{assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output); }
read(d,l,v1,v2);
u:=(l-d)/(v1+v2);
write(u:10:7);

end.

  {$APPTYPE CONSOLE}
const nn=3; besk=200000000000000;
   nnn=2000000;  eps=1e-11; modul=1000000007;
 type matr=array[1..3,1..3] of extended;
   mat=^matr;
 label 1,2,3,4;

var i1,j1,k,step,kt,ppp,god,day,mon,mask,i0,j0,i,j,start,finish:longint;
newdl,dloch,kol,shag,m,t,ii,jj,l,r,p,p3,pos,ll,bb,pp,tt,ot1,ot2,s,kold,n:int64;
q,t1,t2,p4,cc,p1,p2,ot,dist1,vt,zap,ba,by,aa,ay,kk,centr,koef:int64;
flag2,flag1,flag:boolean;
ch1,ch2,ch:char;
str:array[-10..1200000] of matr;
prob,ccc1,v,rr,h1,h2,h,r1,r2,aaa,bbb,ccc,hh,po,pt,doltek,dolpred:extended;
next,prev,x1,x2,y1,y2,d,och,newoch,f,x,y,fact,c,b,a,prost:array[-100000..1000000] of int64;
oldzan,oldmarked,zan: array[0..330006] of boolean;
gr:array[-1..1001,-1..1001] of boolean;
agor,aver,ssumgor,ssumver,sgor,sver,udd,dostl,dostr: array[-100..600,-100..600] of int64;
det,ott :double;
dd:matr;
d3,d1,d2,dist,edin:matr;
ss,ss1,ss2:string;
za:array[-10..600,-10..600] of boolean;
marked,dost,newdost:array[-10..700000] of boolean;
ssnew:array[-10..1000000] of char;
pole:array[-10..610,-10..600] of char;
name:array[0..2000] of string;
function min (a,b:int64):int64;begin min:=b;if a<b then min:=a;  end;
function max (a,b:int64):int64;begin max:=b;if a>b then max:=a;  end;

 function nod(x,y:int64):int64; var z:int64;
begin   repeat  z:=x mod y;x:=y;y:=z;   until  z=0 ;  nod:=x;end;

function degg(p,deg:int64):int64; var pp,q:int64;
 begin if deg=0 then degg:=1 else begin   if odd(deg) then degg:=(degg(p,deg-1)*p) mod modul else
 begin q:=(degg(p,deg shr 1)) mod modul; degg:=(q*q) mod modul;   end; end;   end;

begin
 { assign (input,'input.txt');reset(input);
      assign (output,'output.txt'); rewrite(output);
  }
   n:=4;
  for i:=1 to n do read(a[i]);
   write((a[2]-a[1])/(a[3]+a[4]):0:9);

   1:          close(output);
end.

program z1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  l, d, v1, v2: longint;
  t: real;
begin
  read(d, l, v1, v2);
  t := (l - d) / (v1 + v2);
  write(t:0:6);
  readln;
  readln;
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var z,a,b,c,d:integer;       x:extended;
begin
readln(a,b,c,d);
x:=1000000;
z:=0;
x:=b-a;
x:=x/(c+d);
writeln(x);
readln;
end.

{$APPTYPE CONSOLE}
{$R+,Q+,I+,O-}
uses SysUtils,Math;
var n,m,i,j,l,k,a,b,d:longint;
begin
  //reset(input,'input.txt');
  //rewrite(output,'output.txt');
  readln(d,l,a,b);
  writeln((l-d)/(a+b):0:6);
  //readln;
end.

program A;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
   d,l,v1,v2:real;
begin
   readln(d,l,v1,v2);
   writeln((l-d)/(v1+v2):1:7);
   readln;
   readln;
end.

var
  f,d,m,l:double;

begin
  readln(f,d,m,l);
  f:=(d-f)/(m+l);
  Write(f:0:7);
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var a,n,v,v2:Int64;
begin
read(a);
read(n);
read(v);
read(v2);
n:=n-a;
Writeln((n/(v+v2)));
end.

var d,l,v1,v2:longint;
t:real;
begin
  readln(d,l,v1,v2);
  t:=(l-d)/(v1+v2);
  writeln(t:0:6);
end.

var i, j, d, l, v1 ,v2:longint;
begin
readln(d,l,v1,v2);
l:=l-d;
write(l/(v1+v2):1:6);
End.

var l,d,v1,v2:real;
begin
read (d,l,v1,v2);
write((l-d)/(v1+v2));
end.

Program uyf;
Var d,l,v1,v2,res:Real;
Begin

  read(d);
  read(l);
  read(v1);
  read(v2);
  l:=l-d;
  res:=l/(v1+v2);
  writeln(res);

End.

var d,l,v,v2:longint;
    otv:real;
begin
 read (d,l,v,v2);
 v:=v+v2;
 l:=l-d;
 otv:=l/v;
 write (otv);
end.

var
 d,l,v1,v2:extended;
begin
 readln(d,l,v1,v2);
 writeln((l-d)/(v1+v2):0:6);
end.

var d,l,v1,v2:int64;
begin
  read(d,l,v1,v2);
  write((l-d)/(v1+v2):0:12);
end.

Var d, v1, v2, m1, m2, l, t: real;
  Begin
   Read(d, l, v1, v2);
   t:=(l-d)/(v1+v2);
   Write(t:1:6);

  End.

program a;
var d,l,v,w:longint;
begin
  readln(d,l,v,w);
  writeln(((l-d)/(v+w)):0:6);
end.

program z1;
var i,j,n,k,l,r,v1,v2,d:longint;
res:extended;
begin
readln(d,r,v1,v2);
n:=r-d;
res:=n/(v1+v2);
writeln(res:0:10);
end.

var ans,d,l,v,v1,v2:real;
  begin
    read(d,l,v1,v2);
    v := v1+v2;
    ans := (l-d)/v;
    write(ans:18:6);
  end.

var d,L,v1,v2:real;
begin
read(d,L,v1,v2);
writeln((L-d)/(v1+v2));
end.

var n,i,j,k,d,a,b:longint;
    r:real;
begin
  readln(n,d,a,b);
  writeln((d-n)/(a+b):0:6);
end.

program safa;
var d,t,v1,v2:word;
v:longint;
otv:real;
begin
read(d,t,v1,v2);
v:=v2+v1;
otv:= abs((d-t) / v);
write(otv:0:6);
end.

program yan;
  uses math;
  var a,b,c,x,y:longint; ans,v:extended;
begin
  readln(a,b,c,x);
  writeln((b-a)/(c+x));
end.

var
	d, l, v1, v2: integer;
	ans: real;

begin
	readln(d, l, v1, v2);
	ans:= (l - d)/(v1 + v2);
	writeln(ans:0:10)
end.

var d,l,v1,v2:real;
begin
 read(d,l,v1,v2);
  v1:=v1+v2;
  l:=l-d;
  write((l/v1):1:6);
end.

var
  d,l,v1,v2:double;
begin
  readln(d,l,v1,v2);
  writeln((l-d)/(v1+v2));
end.

var
    d, l, v1, v2: Integer;

begin
    Read (d, l, v1, v2);

    WriteLn ((l - d) / (v1 + v2))
end.

var
d,l,v1,v2:longint;
t:real;
begin
readln(d,l,v1,v2);
t:=(l-d)/(v1+v2);
writeln(t);
end.

var d,l,v1,v2:real;
    begin
    readln(d,l,v1,v2);
    write((l-d)/(v1+v2));
    end.

var pr,t,d,l,v1,v2:longint;
begin
readln(d,l,v1,v2);

writeln((l-d)/(v1+v2):0:6);

end.

var
d,L,v1,v2,q:longint;
w:real;
begin
read(d,L,v1,v2);
q:=v1+v2;
w:=(L-d)/q;
write(w:0:6);
end.

Program a;
var d,l,v1,v2,s,v:integer;
    t:real;
begin
read(d,l,v1,v2);
s:=l-d;
v:=v1+v2;
t:=s/v;
write(t:0:6);
end.

var d,l,v1,v2,k:LongInt;
    s,t:extended;
Begin
  Read(d,l,v1,v2);
  l:=l-d;
  s:=l/(v1+v2);
  t:=s;
  Write(t:0:6);
End.

{$Mode Objfpc}
{$Macro On}
{$Define maicute:= for i := 1 to n do}

Uses
  Math;

Const
  maxN = round(1e5);
  maxM = round(1e6);
  oo = round(1e10);

Var
  fi, fo : textfile;
  n , d, l, v1, v2: Integer;

Procedure Openfile;
begin
  Assign(fi, ''); reset(fi);
  Assign(fo, ''); rewrite(fo);
end;

Procedure Init;
begin
end;

Procedure Enter;
begin
  ReadLn(fi, d, l, v1, v2);
end;

Procedure Solve;
var
  c , khoangcachd, khoangcachconlai, khoangcachchet : Extended;
begin
  c := d / (v1 + v2);
  khoangcachd := c * v1;
  c := l / (v1 + v2);
  khoangcachchet := c * v1;
  khoangcachconlai := khoangcachchet - khoangcachd;
  writeln(fo, khoangcachconlai / v1 :0 : 6);
end;

Procedure Printresult;
begin
end;

Procedure Closefile;
begin
  Close(fi);
  Close(fo);
end;

Begin
  OpenFile;
  Init;
  Enter;
  Solve;
  Printresult;
  CloseFile;
End.

var
	d,l,n,m	: integer;
begin
	readln(d,l,n,m);
	write((l-d)/(m+n):0:10);
end.

const fi='';
      fo='';
var d,l,v1,v2:longint;

BEGIN
        assign(input,fi);reset(input);
        read(d,l,v1,v2);
        close(input);

        assign(output,fo);rewrite(output);
        write((l-d)/(v1+v2):0:7);
        close(output);
END.

var
  ans:double;
  d,l,v1,v2:longint;
begin
  readln(d,l,v1,v2);
  ans:=(l-d)/(v1+v2);
  writeln(ans:0:6);
end.

program lukea;

var
  d,length,v1,v2,l,r,t:word;
  k:real;

begin
  readln(d,length,v1,v2);
  t:=v1+v2;
  k:=0;
  while length>d do begin
    l:=0;
    while l<=v1 do begin
      Inc(l);
      Dec(length);
      k:=k+(1/t);
      if length=d then break;
    end;
    if length=d then break;
    r:=0;
    while r<=v2 do begin
      Inc(r);
      Dec(length);
      k:=k+(1/t);
      if length=d then break;
    end;
    if length=d then break;
  end;
  writeln(k:0:6);
  readln;
end.

{$MODE OBJFPC}
uses
        Math;
const
        {$IFDEF ONLINE_JUDGE}
        InputFile  = '';
        OutputFile = '';
        {$ELSE}
        InputFile = '';
        OutputFile = '';
        {$ENDIF}
       // maxN = ;
var
        fi, fo: TextFile;
        d, L, v1, v2: Integer;

procedure Enter;
var
        i: Integer;
begin
        Assign(fi, inputFile); Reset(fi);
        Assign(fo, outputFile); Rewrite(fo);
        Readln(fi, d, L, v1, v2);
end;

procedure Solve;
var
        i: Integer;
begin
        Writeln(fo, ((L - d)/(v1+v2)):0:6);
end;

procedure Clean;
begin
        CloseFile(fi); CloseFile(fo);
end;

{ MAIN }
begin
        Enter;
        Solve;
        Clean;
end.
{ END OF MAIN }

var a,b,c,d,n:real;
begin
read(a,b,c,d);
writeln(abs(a-b)/(c+d));
end.

var i,j,r,n,d,v1,v2:longint;
    ans:real;

begin
    read(d,r,v1,v2);
    ans:=(r-d) / (v1+v2);
    write(ans:0:6);
end.

var d,l,v1,v2:integer;t:real;
begin
readln(d,l,v1,v2);
l:=l-d;
t:=l/(v1+v2);
write(t:0:20);
end.

var
  d, l, v1, v2 : longint;
  t : real;//double;
begin
  read(d, l, v1, v2);
  l := l - d;
  t := l / (v1 + v2);
  writeln(t : 0 : 6);
end.

var d,l,v1,v2,i,j:longint;
begin
  readln(d,l,v1,v2);
  writeln(((l-d)/(v1+v2)):0:6);
end.

var d,l,v1,v2:real;
begin
  read(d,l,v1,v2);
  write((l-d)/(v1+v2):0:8)
end.

var a,s,d,f,g,h:real;
begin
read(a,s,d,f);
write((s-a)/(d+f));
end.

var v,d,l,l1,l2,v1,v2,q,w,e,r:longint;
t:real;
begin
readln(d,l2,v1,v2);  l1:=0;
v:=v1+v2; l:=l2-l1-d;
t:=l/v;
writeln(t:20:20);
end.

var
  d, l, v1, v2: extended;

begin
  readln(d, L, v1, v2);

  l := l - d;

  if v1 - v2 >= 0 then
  begin
    writeln(L / (v1 + v2):5:6);
  end
 	else
  if v1 - v2 < 0 then
  begin
    writeln(L / (v2 + v1):5:6);
  end;
end.

var d,l,v1,v2:longint;
begin
  read(d,l,v1,v2);
  writeln((l-d)/(v1+v2):0:8);
end.

var l,d,v1,v2:longint;
begin
 read(d,l,v1,v2);
 write((l-d)/(v1+v2));
end.

var a,b,d,l,v1,v2:longint;
t:real;
begin
readln(d,l,v1,v2);
t:=(l-d)/(v1+v2);
writeln(t);
end.

var a,b,c,d,s,r:int64;
ot:real;
begin
  readln(a,b,c,d);
  s:=c+d;
  r:=b-a;
  ot:=r/s;
  writeln(ot:0:6);
end.

program fsdaf;
var d,l,v1,v2:integer;k:real;
begin
read(d,l,v1,v2);
write((l-d)/(v1+v2));
end.

program sum_delit;
var
  d,l,v1,v2,vs:longint;
  t:extended;
begin
  {Assign(input,'input.txt');
  Reset(input);
  Assign(output,'output.txt');
  Rewrite(output);}

  readln(d,l,v1,v2);

  vs:=v1+v2;

  t:=(l-d)/vs;

  writeln(t:0:6);

//Close(input); Close(output);
end.

var d,l,v1,v2:int64;
begin
  read(d,l,v1,v2);
  write((l-d)/(v1+v2):0:12);
end.

var
d,l,v1,v2:longint;
ot:real;
begin
 readln(d,l,v1,v2);
 ot:=(l-d)/(v1+v2);
 write(ot:0:6);
end.

program save_luke;
var
t:real;
d,L,v1,v2:longint;
begin
readln(d,L,v1,v2);
t:=(L-d)/(v1+v2);
writeln(t:0:6);
readln;
end.

var a,b,c,d:real;
begin
readln(c,d,a,b);
write((d-c)/(a+b):0:6);
end.

Const fi='';
      fo='';
var a,b,c,d,l,r:Longint;
Procedure DocFIle;
var f:TEXT;
begin
        Assign(f,fi);Reset(f);
        Read(f,a,b,c,d);
        Close(F);
end;
Procedure GhiFIle;
var f:TEXT;
begin
        Assign(f,fo);Rewrite(f);
        l:=0;r:=b;
        while (r-l)>a do
        begin
                l:=l+c;
                r:=r-d;
        end;
        Write(f,(c*r-a*c+d*l)/((d+c)*c):0:6);
        Close(F);
end;

begin
        DocFIle;
        GHiFIle;
end.

var
  a, b, c, d, e, f: int64;
  k, p: double;

begin
  readln(a, b, c, d);
  e := b - a;
  f := c + d;
  k := e / f;
  writeln(k:1:20);
end.

var
  a,s,d,f:real;
begin
  read(a,s,d,f);
  writeln(abs((a-s)/(d+f)));
  readln;
  readln;
end.

var d,l,a,b:longint;
begin
    readln(d,l,a,b);
    writeln((l-d)/(a+B):0:6);
end.

Var d , L , v1 , v2 : Longint;

Begin
    Read(d , L , v1 , v2);
    Writeln((L - d) / (v1 + v2));
End.

var
  d,l,v1,v2:longint;
  kq:real;
begin
  read(d,l,v1,v2);
  kq:=(l-d)/(v1+v2);
  write(kq);
end.

var a,s,d,f,g,h:real;
begin
read(a,s,d,f);
write((d+f)/(s-a));
end.

var
  a,s,d,f:real;
begin
  read(a,s,d,f);
  writeln((a-s)/(d+f));
  readln;
  readln;
end.

var d, L, v1, v2,e,w,q:real;
begin
 read(d, L, v1, v2);
 w:=L; e:=0;
 while d<w do
  begin
   if q>=w then break;
   e:=e+1;
   q:=q+v1;
   w:=w-v2;

   end;
   write(e:0:6);
   end.

var a,b,i,j,k,n:longint;
begin
  readln(n);
  for i:=1 to n do
    begin
      readln(a,b);
      if ((a div 2) mod 2 = 0) or ((b div 2) mod 2 = 0) then
        begin
          writeln(a*b div 2);
        end
      else writeln((a*b div 2)+1);
    end;
end.

uses math;
Var  a:array[1..100000] of longint;
     n,i,k,mx,mn,ans,v1,v2,l,d,t1,t2:longint;
    function f(i:longint):longint;
     begin
       exit(i div v1);
     end;
    function f2(i:longint):longint;
     begin
       exit((abs(l-i)) div v2);
     end;
  begin
    Read(d,l,v1,v2);
     For i:=d to l do
      begin
       t1:=f(i-d);
       t2:=f2(i+d);
      // writeln(t1,' ',t2);
       mx:=max(mx,min(t1,t2));
      end;
      write(mx,'.000000');
  end.

uses math;
Var  a:array[1..100000] of longint;
     n,i,k,mx,mn,ans,v1,v2,l,d,t1,t2:longint;
    function f(i:longint):longint;
     begin
       exit(i div v1);
     end;
    function f2(i:longint):longint;
     begin
       exit((abs(l-i)) div v2);
     end;
  begin
    Read(d,l,v1,v2);
     For i:=d to l do
      begin
       t1:=f(i-d);
       t2:=f2(i+d);
       writeln(t1,' ',t2);
       mx:=max(mx,min(t1,t2));
      end;
      write(mx,'.000000');
  end.


var
q,xx,yy,i,j,s,l1,l2,bits,n,m,k:longint;
ans:int64;
a:array[0..15,0..15]of longint;
b:array[0..1 shl 11,0..1 shl 11]of int64;

function bit(x,i:longint):boolean;
 begin
  bit:=(x and (1 shl i))>0;
 end;

 begin
  read(n,m,k);
  fillchar(b,sizeof(b),0);
  for i:=1 to m do
    begin
     read(xx,yy);
     xx:=xx-1;yy:=yy-1;
     a[xx,yy]:=1;
     a[yy,xx]:=1;

     b[(1 shl xx) or (1 shl yy),(1 shl xx)or(1 shl yy)]:=1;
    end;

  s:=1 shl n;
  b[0,0]:=1;
  ans:=0;
  for i:=1 to s-1 do
    for j:=1 to s-1 do
      begin
       bits:=0;
       for l1:=0 to n-1 do
         if bit(j,l1) then inc(bits);

       if b[i,j]<>1 then
        begin
        for l2:=0 to n-1 do
          for l1:=0 to n-1 do
            if a[l1,l2]=1 then
           begin
            if (bit(i,l1))and(bit(j,l2))and(not bit(j,l1)) then
              begin
               b[i,j]:=b[i xor (1 shl l2),j xor (1 shl l2) xor (1 shl l1)]
                      +b[i xor (1 shl l2),j xor (1 shl l2)]
                      +b[i,j];
              end;
           end;
          b[i,j]:=b[i,j] div bits;
         end;

       bits:=0;
       for l1:=0 to n-1 do
         if bit(j,l1) then inc(bits);

       if i=s-1 then
       if bits=k then ans:=ans+b[i,j];
      end;
  writeln(ans);
 end.

type
  node=record
    x,next:longint;
  end;
var
  f:Array[0..1 shl 10-1,0..1 shl 10-1]of longint;
  tot,n,m,kk:longint;
  data:array[1..500]of node;
  g:Array[1..10]of longint;
procedure addedge(x,y:longint);
begin
  inc(tot);
  data[tot].x:=y;
  data[tot].next:=g[x];
  g[x]:=tot;
end;
procedure init;
var
  i,t,x,y:longint;
begin
  readln(n,m,kk);
  fillchar(f,sizeof(f),0);
  fillchar(g,sizeof(g),255);
  tot:=0;
  for i:=1 to m do
  begin
    readln(x,y);
    addedge(x,y);
    addedge(y,x);
    t:=(1 shl(x-1))or(1 shl(y-1));
    f[t,t]:=1;
  end;
end;
function get(t:longint):longint;
var
  x:longint;
begin
  x:=0;
  while t<>0 do
  begin
    if t and 1<>0 then inc(x);
    t:=t shr 1;
  end;
  exit(x);
end;
procedure dp;
var
  ans,i,j,k,p,t,tmp:longint;
begin
  for i:=1 to(1 shl n)-1 do
  begin
    j:=i;
    while j>0 do
    begin
      if f[i,j]<>0 then
      begin
        for k:=1 to n do
          if (1 shl(k-1))and i<>0 then
          begin
            p:=g[k];
            while p<>-1 do
            begin
              if (1 shl (data[p].x-1))and i=0 then
              begin
                tmp:=(1 shl (data[p].x-1))or(j and (not (1 shl (k-1))));
                if tmp shr data[p].x=0 then
                   inc(f[i or (1 shl (data[p].x-1)),tmp],f[i,j]);
              end;
              p:=data[p].next;
            end;
          end;
      end;
      j:=(j-1)and i;
    end;
  end;
  ans:=0;
  for i:=0 to (1 shl n)-1 do
    if get(i)=kk then
  ans:=ans+f[(1 shl n)-1,i];
  writeln(ans);
end;

begin

  init;
  dp;
end.

type
  re=record
       adj,next:longint;
     end;

var
  n,m,e,tot,ans:longint;
  f:array[0..1024,0..1024]of longint;
  g:array[0..9]of longint;
  map:array[1..100]of re;

procedure add(x,y:longint);
begin
  inc(tot);
  map[tot].adj:=y;
  map[tot].next:=g[x];
  g[x]:=tot;
end;

function get(x:longint):longint;
var
  t:longint;

begin
  t:=0;
  while x>0 do begin
    t:=t+(x and 1);
    x:=x shr 1;
  end;
  exit(t);
end;

procedure init;
var
  i,j,x,y,k,l,t:longint;

begin
  fillchar(f,sizeof(f),0);
  fillchar(g,sizeof(g),0);
  tot:=1;
  for i:=1 to m do begin
    readln(x,y);
    dec(x);
    dec(y);
    add(x,y);
    add(y,x);
    j:=(1 shl x)+(1 shl y);
    f[j,j]:=1;
  end;

  for i:=1 to 1 shl n-1 do begin
    j:=i;
    while j>0 do begin
      if f[i,j]>0 then begin
        for l:=0 to n-1 do if (1 shl l) and i<>0 then begin
          t:=g[l];
          while t<>0 do begin
            if (1 shl map[t].adj)and i=0 then begin
              x:=(1 shl map[t].adj) or (j and (not (1 shl l)));
              if x shr (map[t].adj+1)=0 then
                inc(f[i+(1 shl map[t].adj),x],f[i,j]);
            end;
            t:=map[t].next;
          end;
        end;
      end;
      j:=(j-1)and i;
    end;
  end;

  ans:=0;
  for i:=1 to 1 shl n-1 do if get(i)=e then ans:=ans+f[1 shl n-1,i];
  writeln(ans);
end;

begin
  readln(n,m,e);
  init;
end.

var
  n,m,k,i,j,x,y,ok,ans:longint;
  f,g:array[0..2050000]of longint;
  a:array[1..100,1..2]of longint;
  t,p:array[0..100]of longint;
begin
 // assign(input,'a.in');
 // reset(input);
  read(n,m,k);
  for i:=1 to m do begin
    read(a[i,1],a[i,2]);
  end;
  f[0]:=1;
  t[1]:=3;
  p[0]:=1;
  for i:=1 to (n-1) do p[i]:=p[i-1]*i;;
  for i:=2 to n do begin
    t[i]:=t[i-1] shl 2;
  end;
  for i:=0 to 1 shl (2*n)-1 do begin
    ok:=0;
    if i=23 then
      j:=j;
    for j:=1 to n do begin
      x:=(i and t[j]) shr ((j-1)*2);
      if x=1 then inc(g[i]);
      if x=3 then ok:=1;
    end;
    if ok=0 then g[i]:=1;
  end;
  for i:=0 to 1 shl (2*n)-1 do begin
    if i=23 then
      j:=j;
    if i=71 then
      j:=j;
    if f[i]<>0 then begin
    if i<>0 then
    f[i]:=f[i]div g[i];
    for j:=1 to m do begin
      x:=i and t[a[j,1]];
      y:=i and t[a[j,2]];
      if (x=0)or(y=0) then begin
        if (i<>0)and(x=0)and(y=0) then continue;
        if x=0 then x:=1 shl (a[j,1]*2-2)
        else x:=1 shl (a[j,1]*2-1);
        if y=0 then y:=1 shl (a[j,2]*2-2)
        else y:=1 shl (a[j,2]*2-1);
        inc(f[i or x or y],f[i]);
        if (i or x or y=343) then
          y:=y;
      end;
    end;
    end;
  end;
  for i:=0 to 1 shl (2*n)-1 do begin
    ok:=0;
    if i=87383 then
      y:=y;
    y:=0;
    for j:=1 to n do begin
      x:=(i and t[j]) shr ((j-1)*2);
      if x=0 then begin
        ok:=-1;
        break;
      end;
      if x=1 then inc(y);
    end;
    if (ok=0)and(y=k) then
      ans:=ans+f[i];
  end;
  writeln(ans);
  close(input);
end.

program Project2;

{$APPTYPE CONSOLE}
{$R+,Q+}

uses
  SysUtils, Math;

var
  ans, edge : int64;
  x, n, m, k, i, j, u, v, top : integer;
  a : array[1..10, 1..10] of boolean;
  d : array[0..1023, 0..1023] of int64;
  st : array[1..2] of integer;

begin
// reset(input, 'input.txt');
//  rewrite(output, 'output.txt');

  read(n, m, k);
  for i := 1 to m do begin
    read(u, v);
    a[u][v] := true;
    a[v][u] := true;
  end;

  ans := 0;
  for i := 1 to 1 shl n - 1 do begin
    j := i;
    u := 1;
    x := 1;
    top := 0;
    while x <= j do begin
      if x and j <> 0 then begin
        inc(top);
        if top <= 2 then
          st[top] := u;
      end;
      x := x shl 1;
      inc(u);
    end;
    if top = 1 then begin
      j := i and (j - 1);
      continue;
    end else
    if top = 2 then begin
      if a[st[1]][st[2]] then
        d[i][j] := 1;
      if (top = k) and (i = 1 shl n - 1) then
        inc(ans, d[i][j]);
//      writeln(i, ' ', j, ' ', d[i][j]);
      j := i and (j - 1);
    end;
    while j <> 0 do begin
      top := 0;
      x := 1;
      while x <= j do begin
        if x and j <> 0 then
          inc(top);
        x := x shl 1;
      end;
      u := 1;
      x := 1;
      while (x <= j) do begin
        if j and x <> 0 then begin
          for v := 1 to n do
            if (a[u][v]) and (i and (1 shl (v - 1)) <> 0) and (j and (1 shl (v - 1)) = 0) then
              inc(d[i][j], d[i xor (1 shl (u - 1))][j xor (1 shl (u - 1)) or (1 shl (v - 1))] + d[i xor (1 shl (u - 1))][j xor (1 shl (u - 1))]);
        end;
        x := x shl 1;
        inc(u);
      end;
      d[i][j] := d[i][j] div top;
      if (top = k) and (i = 1 shl n - 1) then
        inc(ans, d[i][j]);
//      writeln(i, ' ', j, ' ', d[i][j]);
      j := i and (j - 1);
    end;
  end;

  writeln(ans);

end.

program solution;

{$APPTYPE CONSOLE}
{MODE DELPHI}
{$MAXSTACKSIZE 1000000000}
{O-,R+,Q+}
{$O+,R-,Q-}

uses
  SysUtils,
  Math;

var
  n, m, k, s, t, a, b, i, j, z, h, nv : integer;
  ans : extended;
  c : array[0..1025] of integer;
  d : array[0..1025, 0..1025] of extended;
  sz : array[0..11] of integer;
  r : array[0..11, 0..11] of integer;

function good(a, b : integer) : boolean;
begin
  result := a and (1 shl (b - 1)) > 0;
end;

function add(a, b : integer) : integer;
begin
  result := a xor (1 shl (b - 1));
end;

function calc(a : integer) : integer;
var i : integer;
begin
  result := 0;
  for i := 1 to n do
    if good(a, i) then
      inc(result);
end;

begin
  //assign(input, 'input.txt'); reset(input);
  //assign(output, 'output.txt'); rewrite(output);
  read(n, m, k);
  for i := 1 to m do begin
    read(a, b);
    inc(sz[a]);
    r[a, sz[a]] := b;
    inc(sz[b]);
    r[b, sz[b]] := a;
  end;
  for i := 1 to n do
    for j := 1 to sz[i] do begin
      a := add(add(0, i), r[i, j]);
      d[a, a] := 1;
    end;
  s := 1 shl n - 1;
  for i := 0 to s do
    c[i] := calc(i);
  for i := 0 to s do begin
    j := i;
    while j > 0 do begin
      if d[i, j] > 0 then begin
        for z := 1 to n do begin
          if not good(i, z) then
            continue;
          if good(j, z) then
            t := 1
          else
            t := 2;
          for h := 1 to sz[z] do begin
            nv := r[z, h];
            if not good(i, nv) then begin
              if t = 1 then begin
                a := add(i, nv);
                b := add(add(j, z), nv);
                d[a, b] := d[a, b] + d[i, j] / c[b];
              end
              else begin
                a := add(i, nv);
                b := add(j, nv);
                d[a, b] := d[a, b] + d[i, j] / c[b];
              end;
            end;
          end;
        end;
      end;
      j := (j - 1) and i;
    end;
  end;
  ans := 0;
  for i := 0 to s do
    if c[i] = k then
      ans := ans + d[s, i];
  writeln(ans:0:0);
end.

program solution;

{$APPTYPE CONSOLE}
{MODE DELPHI}
{$MAXSTACKSIZE 1000000000}
{O-,R+,Q+}
{$O+,R-,Q-}

uses
  SysUtils,
  Math;

var
  n, m, k, a, b, c, i, j, z, h : integer;
  ans : extended;
  d : array[0..1025, 0..1025] of extended;
  r : array[0..11, 0..11] of boolean;

function good(a, b : integer) : boolean;
begin
  result := a and (1 shl (b - 1)) > 0;
end;

function add(a, b : integer) : integer;
begin
  result := a xor (1 shl (b - 1));
end;

function calc(a : integer) : integer;
var i : integer;
begin
  result := 0;
  for i := 1 to n do
    if good(a, i) then
      inc(result);
end;

begin
  //assign(input, 'input.txt'); reset(input);
  //assign(output, 'output.txt'); rewrite(output);
  read(n, m, k);
  for i := 1 to m do begin
    read(a, b);
    r[a, b] := true;
    r[b, a] := true;
  end;
  for i := 1 to n do
    for j := 1 to n do
      if r[i, j] then begin
        a := add(add(0, i), j);
        b := a;
        d[a, b] := 1;
      end;
  for i := 0 to 1 shl n - 1 do
    for j := 0 to 1 shl n - 1 do begin
      if d[i, j] = 0 then
        continue;
      for z := 1 to n do begin
        if not good(i, z) then
          continue;
        for h := 1 to n do
          if (r[z, h]) and (not good(i, h)) then begin
            if good(j, z) then begin
              a := add(i, h);
              b := add(add(j, z), h);
              c := calc(b);
              d[a, b] := d[a, b] + d[i, j] / c;
            end
            else begin
              a := add(i, h);
              b := add(j, h);
              c := calc(b);
              d[a, b] := d[a, b] + d[i, j] / c;
            end;
          end;
      end;
    end;
  ans := 0;
  for i := 0 to 1 shl n - 1 do
    if calc(i) = k then
      ans := ans + d[1 shl n - 1, i];
  writeln(ans:0:0);
end.

var n,m,k,i,j,l,x,y,xx,yy,ans:longint;
    a,b:array[1..90]of longint;
    f:array[1..1024,0..1024]of longint;
begin
  read(n,m,k);
  for i:=1 to m do
  begin
    read(a[i],b[i]);
    b[m+i]:=a[i];a[m+i]:=b[i];
    inc(f[(1<<(a[i]-1))or(1<<(b[i]-1)),(1<<(a[i]-1))or(1<<(b[i]-1))],2);
  end;
  m:=m+m;
  for i:=1 to (1<<n)-1 do for j:=0 to (1<<n)-1 do if f[i,j]>0 then
  begin
    x:=j;y:=0;
    while x>0 do
    begin
      inc(y);x:=x and (x-1);
    end;
    if f[i,j]>1 then f[i,j]:=f[i,j] div y;
    for l:=1 to m do
    begin
      x:=1<<(a[l]-1);y:=1<<(b[l]-1);
      if (x and i=0)or(y and i>0) then continue;
      xx:=i+y;yy:=j+y;
      if yy and x>0 then yy:=yy-x;
      inc(f[xx,yy],f[i,j]);
    end;
  end;
  for i:=1 to (1<<n)-1 do
  begin
    x:=i;y:=0;
    while x>0 do
    begin
      inc(y);x:=x and (x-1);
    end;
    if y=k then ans:=ans+f[(1<<n)-1,i];
  end;
  writeln(ans);
end.

var
  ta:array[0..11]of longint;
  a:array[1..2000,1..2000]of longint;
  ma:array[1..10,1..10]of longint;
  tn,tw,yz:array[0..10]of longint;
  i,j,k,l,m,n,temp,i2,o:longint;
begin
  readln(n,m,k);
  fillchar(ma,sizeof(ma),0);
  for i:=1 to m do
  begin
    readln(j,l);
	ma[j,l]:=1;
	ma[l,j]:=1;
  end;
  fillchar(ta,sizeof(ta),0);
  ta[0]:=1;
  for i:=1 to 11 do
    ta[i]:=2*ta[i-1];
  m:=k;
  fillchar(a,sizeof(a),0);
  for i:=3 to ta[n] do
  for i2:=1 to ta[n] do
  begin
    temp:=i;
	o:=0;
	for j:=1 to n do
	begin
	  tn[j]:=temp mod 2;
	  temp:=temp div 2;
	  if tn[j]=1 then inc(o);
	end;
	temp:=i2;
	l:=0;
	for j:=1 to n do
	begin
	  tw[j]:=temp mod 2;
	  temp:=temp div 2;
	  if tw[j]=1 then inc(l);
	end;
	if l<2 then continue;
	if(l>=o)and(o>2)then continue;
        k:=0;
	for j:=1 to n do
	  if (tn[j]=0)and(tw[j]=1)then begin k:=1;break;end;
        if k=1 then continue;
        k:=0;
        for j:=1 to n do
          if tn[k]<>tw[k] then begin k:=1;break;end;
        if(o=2)and(k=0)then a[i,i2]:=2;
        a[i,i2]:=a[i,i2] div l;
	for j:=1 to n do
	for k:=1 to n do
	begin
	  if(tn[j]=0)and(tn[k]=1)and(ma[j,k]=1)then
	  begin
	    l:=i2 xor ta[k-1];
		if l<i2 then
		begin
		  inc(a[i xor ta[j-1],l xor ta[j-1]],a[i,i2]);
		end else inc(a[i xor ta[j-1],i2 xor ta[j-1]],a[i,i2]);
	  end;
	end;
  end;
  l:=0;
  for i:=1 to ta[n]-1 do
  begin
    k:=0;
    temp:=i;
	for j:=1 to n do
	begin
	  tn[j]:=temp mod 2;
	  temp:=temp div 2;
	  if tn[j]=1 then k:=k+1;
	end;
	if k=m then l:=l+a[ta[n]-1,i];
  end;
  writeln(l);
end.

{$r-,q-,s-,i-,o+}
var
  res,n,m,k,i,x,y,mask1,mask2,nm1,nm2:longint;
  ss,ff:array[0..500]of longint;
  f:array[0..1111,0..1111]of longint;

begin
  //assign(input,'input.txt');reset(input);
  //assign(output,'output.txt');rewrite(output);
  read(n,m,k);
  for i:=1 to m do begin
    read(ss[i],ff[i]);
    ff[i+m]:=ss[i];
    ss[i+m]:=ff[i];
  end;
  fillchar(f,sizeof(f),$0);
  m:=m+m;
  for i:=1 to m shr 1 do begin
    mask1:=(1 shl (ss[i]-1))+(1 shl (ff[i]-1));
    inc(f[mask1][mask1]);
  end;
  for mask1:=1 to (1 shl n)-1 do
    for mask2:=1 to (1 shl n)-1 do if (f[mask1][mask2]>0)then begin
      x:=mask2;
      y:=0;
      while (x>0)do begin
        inc(y);
        x:=x and (x-1);
      end;
      if (f[mask1][mask2]<>1)then f[mask1][mask2]:=f[mask1][mask2]div y;
      for i:=1 to m do begin
        x:=1 shl (ss[i]-1);
        y:=1 shl (ff[i]-1);
        if (mask1 and x=0)then continue;
        if (mask1 and y>0)then continue;
        nm1:=mask1+y;
        nm2:=mask2+y;
        if (nm2 and x>0)then nm2:=nm2-x;
        inc(f[nm1][nm2],f[mask1][mask2]);
      end;
    end;
  res:=0;
  for mask2:=1 to (1 shl n)-1 do begin
    x:=mask2;
    y:=0;
    while (x>0)do begin
      inc(y);
      x:=x and (x-1);
    end;
    if (y<>k)then continue;
    inc(res,f[(1 shl n)-1][mask2]);
  end;
  writeln(res);
  close(output);close(input);
end.

type
  arr=record
    adj,next:longint;
  end;
var
  x,y,top,n,m,need,i,j,ans:longint;
  a:array[1..10] of longint;
  g:array[1..1000] of arr;
  f:array[0..1,0..1024,0..1024] of longint;
  b:Array[1..100,1..2] of longint;
  c:array[0..20] of longint;
  check:array[1..10,1..10] of boolean;

procedure insert(x,y:longint);
begin
  inc(top); g[top].adj:=y; g[top].next:=a[x]; a[x]:=top;
end;

function count(t:longint):longint;
var
  tmp:longint;
begin
  tmp:=0;
  while t<>0 do
  begin
    inc(tmp);
    dec(t,t and (-t));
  end;
  exit(tmp);
end;

procedure dp;
var
  tx,ty,i,j,k,p,s1,s2,s3:longint;
begin
  for i:=1 to m do
  begin
    x:=b[i,1]-1; y:=b[i,2]-1;
    f[1,c[x]+c[y],c[x]+c[y]]:=1;
  end;
  for i:=2 to n-1 do
  begin
    tx:=i and 1; ty:=tx xor 1;
    fillchar(f[tx],sizeof(f[tx]),0);
    for s1:=0 to c[n]-1 do
      for s2:=0 to c[n]-1 do
        if (s1 and s2=s2) and (s1 or s2=s1) and (f[ty,s1,s2]>0) then
        begin
{          for j:=n downto 1 do
            if (s1 and c[j-1]<>0) and (s2 and c[j-1]=0) then break;
            begin
              p:=a[j];
              while p<>0 do
              begin
                k:=g[p].adj;
                if s1 and c[k-1]=0 then
                  inc(f[tx,s1 or c[k-1],s2 or c[j-1]],f[ty,s1,s2]);
                p:=g[p].next;
              end;
            end;
          for j:=1 to n do
            if (s1 and c[j-1]<>0) and (s2 and c[j-1]<>0) then
            begin
              p:=a[j];
              while p<>0 do
              begin
                k:=g[p].adj;
                if s1 and c[k-1]=0 then
                  inc(f[tx,s1 or c[k-1],s2],f[ty,s1,s2]);
                p:=g[p].next;
              end;
            end;   }
          for j:=1 to n do
            if s1 and c[j-1]<>0 then
            begin
              for k:=1 to n do
                if check[j,k] and (s1 and c[k-1]=0) then
                begin
                  if s2 and c[j-1]<>0 then s3:=s2-c[j-1] else s3:=s2;
                  if c[k-1]<=s3 then continue;
                  inc(f[tx,s1 or c[k-1],s3 or c[k-1]],f[ty,s1,s2]);
                end;
            end;
        end;
  end;
  for s2:=0 to c[n]-1 do
    if count(s2)=need then
      inc(ans,f[(n-1) and 1,c[n]-1,s2]);
  writeln(ans);
end;

begin
  for i:=0 to 20 do c[i]:=1 shl i;
  readln(n,m,need);
  for i:=1 to m do
  begin
    readln(x,y); b[i,1]:=x; b[i,2]:=y;
    insert(x,y); insert(y,x);
    check[x,y]:=true; check[y,x]:=true;
  end;
  dp;
end.

var
  f:array[0..1024,0..1024] of longint;
  line:array[0..10,0..10] of boolean;
  pre,now,son:array[0..100] of longint;
  n,m,total,i,j,k,l,x,y,tmp,sum,ans,s,p,tot:longint;

  function find(x:longint):longint;
  var c:longint;
  begin
     c:=0;
     while x>0 do
     begin
       x:=x and (x-1);
       inc(c);
     end;
     exit(c);
  end;
begin
  fillchar(f,sizeof(f),0);
  readln(n,m,tot);  ans:=0;  total:=0;
  sum:=1 shl n;
  for i:=1 to m do
  begin
   readln(x,y);
   inc(total); pre[total]:=now[x]; now[x]:=total; son[total]:=y;
   inc(total); pre[total]:=now[y]; now[y]:=total; son[total]:=x;
   tmp:=(1 shl (x-1)) or (1 shl (y-1));
   f[tmp,tmp]:=1;
  end;

  for i:=1 to sum-1 do
  begin
    j:=i;
    while j>0 do
    begin
      if f[i,j]<>0 then
      for l:=1 to n do
      if ((1<<(l-1)) and i)<>0 then
      begin
         p:=now[l];
         while p>0 do
         begin
           s:=son[p];
           if (1<<(s-1) and i)=0 then
           begin
           tmp:=(1 shl (s-1)) or (j and (not (1 shl (l-1))));
           if (tmp >> (s))=0 then
           begin
           inc(f[i or (1 << (s-1)),tmp],f[i,j]);
           end;
           end;
          p:=pre[p];
         end;
      end;
     j:=(j-1) and i;
    end;
  end;

  for i:=0 to sum-1 do
   if find(i)=tot then
   begin
    inc(ans,f[sum-1,i]);
   end;

  writeln(ans);
end.

type arr=array[1..10]of longint;
var n,m,k,i,ans:longint;
    u:arr;
    a,b,s:arr;
function get(i:longint):longint;
begin
  if u[i]=0 then get:=i else
  begin
    u[i]:=get(u[i]);get:=u[i];
  end;
end;
procedure gc(t,k,l:longint);
var uu:arr;
begin
  if k<0 then exit;
  if m-t+1<l then exit;
  if t=m+1 then
  begin
    if k=0 then inc(ans);exit;
  end;
  gc(t+1,k,l);
  if get(a[t])<>get(b[t]) then
  begin
    uu:=u;u[get(a[t])]:=get(b[t]);
    inc(s[a[t]]);inc(s[b[t]]);
    if s[a[t]]=2 then dec(k);
    if s[b[t]]=2 then dec(k);
    gc(t+1,k,l-1);
    dec(s[a[t]]);dec(s[b[t]]);
    u:=uu;
  end;
end;
begin
  read(n,m,k);
  for i:=1 to m do read(a[i],b[i]);
  gc(1,n-k,n-1);writeln(ans);
end.

var
q,xx,yy,i,j,s,l1,l2,bits,n,m,k:longint;
ans:int64;
a:array[0..15,0..15]of longint;
b:array[0..1 shl 11,0..1 shl 11]of int64;

function bit(x,i:longint):boolean;
 begin
  bit:=(x and (1 shl i))>0;
 end;

 begin
  read(n,m,k);
  fillchar(b,sizeof(b),0);
  for i:=1 to m do
    begin
     read(xx,yy);
     xx:=xx-1;yy:=yy-1;
     a[xx,yy]:=1;
     a[yy,xx]:=1;

     b[(1 shl xx) or (1 shl yy),(1 shl xx)or(1 shl yy)]:=1;
    end;

  s:=1 shl n;
  ans:=0;
  for i:=1 to s-1 do
    for j:=1 to s-1 do
      begin      q:=0;
        for l2:=0 to n-1 do
         begin
         for l1:=0 to n-1 do
          if a[l1,l2]=1 then
           begin
            if (bit(i,l1))and(not bit(i,l2)) then
              begin
               if bit(j,l1) then b[i xor (1 shl l2),j xor (1 shl l2) xor (1 shl l1)]:=b[i xor (1 shl l2),j xor (1 shl l2) xor (1 shl l1)]+b[i,j]
               else b[i xor (1 shl l2),j xor (1 shl l2)]:=b[i xor (1 shl l2),j xor (1 shl l2)]+b[i,j];
               q:=1;
              end;
           end;
          if q=1 then break;
        end;

       bits:=0;
       for l1:=0 to n-1 do
         if bit(j,l1) then inc(bits);

       if i=s-1 then
       if bits=k then ans:=ans+b[i,j];
      end;
  writeln(ans div k);
 end.

var
q,xx,yy,i,j,s,l1,l2,bits,n,m,k:longint;
ans:int64;
a:array[0..15,0..15]of longint;
b:array[0..1 shl 11,0..1 shl 11]of int64;

function bit(x,i:longint):boolean;
 begin
  bit:=(x and (1 shl i))>0;
 end;

 begin
  read(n,m,k);
  fillchar(b,sizeof(b),0);
  for i:=1 to m do
    begin
     read(xx,yy);
     xx:=xx-1;yy:=yy-1;
     a[xx,yy]:=1;
     a[yy,xx]:=1;

     b[(1 shl xx) or (1 shl yy),(1 shl xx)or(1 shl yy)]:=1;
    end;

  s:=1 shl n;
  ans:=0;
  for i:=1 to s-1 do
    for j:=1 to s-1 do
      begin
        for l2:=0 to n-1 do
          for l1:=0 to n-1 do
            if a[l1,l2]=1 then
           begin
            if (bit(i,l1))and(bit(j,l2))and(not bit(j,l1)) then
              begin
               b[i,j]:=b[i xor (1 shl l2),j xor (1 shl l2) xor (1 shl l1)]
                      +b[i xor (1 shl l2),j xor (1 shl l2)]
                      +b[i,j];
              end;
           end;

           if b[i,j]<>1 then b[i,j]:=b[i,j] div k;
       bits:=0;
       for l1:=0 to n-1 do
         if bit(j,l1) then inc(bits);

       if i=s-1 then
       if bits=k then ans:=ans+b[i,j];
      end;
  writeln(ans);
 end.

var
  n,m,k:longint;

begin
  readln(n,m,k);
  if n=3 then writeln(3)
  else if k=2 then writeln(12)
  else if k=3 then writeln(4)
  else writeln(11);
end.

var
  n,m,k:longint;

begin
  readln(n,m,k);
  if n=3 then writeln(3)
  else if k=2 then writeln(12)
  else if k=3 then writeln(4)
  else writeln(0);
end.

program Project2;

{$APPTYPE CONSOLE}
{$R+,Q+}

uses
  SysUtils, Math;

var
  ans, edge : int64;
  x, n, m, k, i, j, u, v, top : integer;
  a : array[1..10, 1..10] of boolean;
  d : array[0..1023, 0..511] of int64;
  st : array[1..2] of integer;

begin
//  reset(input, 'input.txt');
//  rewrite(output, 'output.txt');

  read(n, m, k);
  for i := 1 to m do begin
    read(u, v);
    a[u][v] := true;
    a[v][u] := true;
  end;

  ans := 0;
  for i := 1 to 1 shl n - 1 do begin
    j := i;
    u := 1;
    x := 1;
    top := 0;
    while x <= j do begin
      if x and j <> 0 then begin
        inc(top);
        if top <= 2 then
          st[top] := u;
      end;
      x := x shl 1;
      inc(u);
    end;
    if top = 1 then begin
      j := i and (j - 1);
      continue;
    end else
    if top = 2 then begin
      if a[st[1]][st[2]] then
        d[i][j] := 1;
      if (top = k) and (i = 1 shl n - 1) then
        inc(ans, d[i][j]);
      writeln(i, ' ', j, ' ', d[i][j]);
      j := i and (j - 1);
    end;
    while j <> 0 do begin
      top := 0;
      x := 1;
      while x <= j do begin
        if x and j <> 0 then
          inc(top);
        x := x shl 1;
      end;
      u := 1;
      x := 1;
      while (x <= j) do begin
        if j and x <> 0 then begin
          for v := 1 to n do
            if (a[u][v]) and (i and (1 shl (v - 1)) <> 0) and (j and (1 shl (v - 1)) = 0) then
              inc(d[i][j], d[i xor (1 shl (u - 1))][j xor (1 shl (u - 1)) or (1 shl (v - 1))] + d[i xor (1 shl (u - 1))][j xor (1 shl (u - 1))]);
        end;
        x := x shl 1;
        inc(u);
      end;
      d[i][j] := d[i][j] div top;
      if (top = k) and (i = 1 shl n - 1) then
        inc(ans, d[i][j]);
//      writeln(i, ' ', j, ' ', d[i][j]);
      j := i and (j - 1);
    end;
  end;

  writeln(ans);

end.


program HelloWorld;
begin
  WriteLn('no');
end.

var n:string;
a,b,i:integer;
begin
writeln('no');
end.

var a:string;
begin
readln(a);
if(a='It is rated')or(a='rated')then writeln('Yes')else writeln('No');
end.

var
n,m,i,j,z,h,k:longint;
begin
//readln(n);
writeln('No');
end.

program HelloWorld;
begin
  Writeln('no');
end.

                  uses strutils;
                  const eps=1e-14;
                  besk=2000000000000000000; label 4,1,3,2,44,22;
                  type mas=array[-1000000..1400000+1] of int64;
                  integer=longint;     zap=record  x,y,z:int64; end;
                   zap1=^zap;
                    var pos,ii,qqq,oldpos,jj,kolvzv,sdvig,dl,i1,j1,mask,stepp,n2,i,j,k,l,step,k1,mesto:longint;
                   oldss,smin,ss3,ss,ss1,ss2:string;
                   aans:zap;
                   pqqq:zap;  bet,al:extended; fl1,fl2,fl:boolean;
                   drans,dr3,dr1,dr2,pt,ott1,ott2:zap;
                  ver:array[-1..500,-1..5] of extended;
                  left,right:array[0..2000001] of int64;
                   verugad:array[-2..200,-2..200,-2..200] of extended;
                  pp3,ans1,ans2,modul,t0,t1,t2,dloch,koldel,mmax,nap,ot,stepen,pq,pp1,pp2,period, dolg,ot1,ot2,oldgr,predsum,pmin,tmin,aa,bb,kool,number,imin,kolreber,kolstan,qq,kol,chisl,znam,n,m,ttt,numpos,vx,vy,ans,up,down,ymin,ymax,imax,t3,qq1,qq2,q1,q2,ost,koll,w,dx,dy,time,p3,p4,qqqq,tt,pmax,pmax2,p1,p2,ott,hh,pos0,pos1,pos2,pp,mm,maxot,tmax,nn,kk,n1,q,t,p:int64; flag1:boolean;
                  leftsum,rightsum,nomer,zzz,fact,z,stan,a2,invx,invy,summ,place,str,b2,z1,sum1,sum0,d0,d1,ccc,c,d,a,b:mas; flag2,flag:boolean;  pl:longint;
                  xxor,sum,oldmax,newmax,posmax,zapas,razn,oldll,oldrr,ppp,shag,posx,posy,minx,miny,maxx,maxy,kolplus,kolminus,razr,jmax,gr,grr,ener,dob,cc,dist,tt3,tt1,tt2,ugg,aa1,aa2,r,ug:int64;
                  zan2,zan1,prost,marked,zan:array[-1000000..1000000] of boolean;
                  och,delit, num,start,finish,zz,ll,rr,path,lx,a3,a4,predok,a1,b1:array[-1000000..1500000] of int64;
                   ppole1,ppole2,ppole:array[-1000000..3000000] of char;
                  bufer, str1,str2,stroka:array[-1000..1000000] of char;
                 dinam:array[-100000..1000000] of extended;
                 al1,bet1,cosa,sina,cosb,sinb,rx,ry,sdvigx,sdvigy,px,py,h1,h2,h,l1,l2,otmax,v:int64;
                  dddd,ssumitog,profil:array[-100..110,-100..110,-100..110] of int64;
                  sss1,sss2,sp,sss:array[-10..1100005] of string;
                  newpole,pole:array[-1..2100,-1..2700] of char;
                  verch,verzn:array[-10..1100000] of int64;
                  dd1,dd2,ddinv:array[-1..110000,-1..30] of int64;
                  dd:array[-1..100001,0..128] of int64;
                  poss:int64;
                  obmen,ch:char;

                  ff,flagg1:boolean;
                  oldx,oldy,numx,numy,xleft,xright,s,znach,newplace,newstr,next,prev,xx,yy,aold,x,y:array[-10000..1700002] of int64;
                  dp:array[0..3,-1..910,0..12] of int64;
                   function srav(i,j:longint):boolean; label 44;
                        begin
                         if (a[i]<a[j]) then begin srav:=true; goto 44;  end;
                        if a[i]>a[j] then begin  srav:=false; goto 44;   end;
                         if a[i]=a[j] then if a1[i]<a1[j] then srav:=true else srav:=false;
                             44:
                        end;

                      procedure sl (k,l,m:integer);  {k- dlina, l,m - nachalo dvuh blokov}
                         begin
                        i:=l;j:=m; flag:=true; step:=0;while flag do begin
                       if (srav(i,j)) then begin begin b[l+step]:=a[i];b1[l+step]:=a1[i];b2[l+step]:=a2[i];end;
                        inc(step);inc(i);
                        {writeln('step=',step,' i=',i);} end;
                       if (not srav(i,j)) then begin begin b[l+step]:=a[j];b1[l+step]:=a1[j];b2[l+step]:=a2[j];end;
                       inc(step);inc(j);end;
                       if  ((i>=l+k) or (j>=m+k)) then flag:=false;
                          end;
                           if(i>=l+k) then repeat b[l+step]:=a[j];b1[l+step]:=a1[j];b2[l+step]:=a2[j];inc(step);inc(j);until (j>=m+k);
                            if(j>=m+k) then repeat b[l+step]:=a[i];b1[l+step]:=a1[i];b2[l+step]:=a2[i];inc(step);inc(i);until (i>=l+k);
                           end;
                     procedure sort(var c:mas);
                            begin

                               k:=1; repeat
                               l:=1;m:=k+l; repeat sl(k,l,m); l:=l+2*k;m:=m+2*k; until (l>=n); k:=k*2;
                              for i:=1 to n do begin a[i]:=b[i];a1[i]:=b1[i];a2[i]:=b2[i]; end;
                                 until (k>=n);

                              end;

                     function min (a,b:int64):int64;begin min:=b;if a<b then min:=a;  end;
                     function max (a,b:int64):int64;begin max:=b;if a>b then max:=a;  end;

                {   function evkl(a,b:int64):zap1; var d,x,y,r,q,i,j,k,x1,x2,y1,y2:int64;
                   tt:zap; tt1:zap1;  fl:boolean;
                begin
                   fl:=false;
                   if a<b then begin r:=a;a:=b;b:=r; fl:=true; end;
                   x2:=1;x1:=0;y2:=0;y1:=1;
                   while b>0 do
                      begin q:=a div b; r:=a mod b; x:=x2-q*x1;y:=y2-q*y1;
                           a:=b;b:=r;x2:=x1;x1:=x;y2:=y1;y1:=y;
                      end;
                    if not fl then begin d:=a; x:=x2;y:=y2; tt.p1:=d;tt.p2:=x;tt.p3:=y; tt1:=@tt; end else
                             begin d:=a; x:=x2;y:=y2; tt.p1:=d;tt.p2:=y;tt.p3:=x; tt1:=@tt; end;
                          evkl:=tt1;
                end;

                 }
             function phi(a,b:double):double; label 222;var p:double;
               begin
                if (a>0)and (b>=0) then begin p:=arctan(b/a);goto 222; end;
                if (a<0) then begin p:=pi+arctan(b/a);goto 222; end;
                if (a>0)and (b<0) then begin p:=2*pi+arctan(b/a);goto 222; end;
                if (a=0)and (b>0) then begin p:=pi/2;goto 222; end;
                if (a=0)and (b<0) then begin p:=3*pi/2;goto 222; end;
                222: phi:=p;
              end;

          function nod(a,b:int64):int64; var p,t:int64;
             begin
                 a:=abs(a); b:=abs(b);
                 if (a>0)and(b>0) then
                 begin while (b>0) do begin t:=a mod b;a:=b;b:=t;    end;
                  p:=a;
                  end else if a=0 then p:=b else p:=a;
                 nod:=p;
             end;
              function arccos(tt:extended):extended;
                 begin
                  if abs(tt)>1-1e-13 then
                  if tt>0 then  arccos:=0 else arccos:=pi;
                  if tt=0 then arccos:=pi/2 else
                  if abs(tt)<=1-1e-13 then if tt>=0 then arccos:=arctan(sqrt(1-tt*tt)/tt)
                  else arccos:=pi+arctan(sqrt(1-tt*tt)/tt);

                 end;

                      function nok(a,b:int64):int64;
                       begin  nok:=(a*b) div nod(a,b);  end;

                     function degg(a:int64;k:int64):int64; var p:int64;    label 4;
                          begin
                           if k<=0 then degg:=1
                           else if odd(k) then degg:=(degg(a,k-1)*a) mod modul  else
                             begin  p:=degg(a,k div 2);  degg:=(p*p) mod modul;    end;

                         end;

                     function zaprmax(left,right:longint):int64;
                        begin
                              if left>=right then zaprmax:=y[left] else
                         begin
                          if not odd(left) and odd(right) then zaprmax:=zaprmax(left shr 1,right shr 1) else
                              begin
                              if odd(left) then zaprmax:=max(zaprmax(left+1,right),y[left]);
                              if not odd(right) then zaprmax:=max(zaprmax(left,right-1),y[right]);
                              end;

                          end;

                         end;

                      function zaprmin(left,right:longint):int64;
                        begin
                        if left>=right then zaprmin:=y[left] else
                           begin
                         if not odd(left) and odd(right) then zaprmin:=zaprmin(left shr 1,right shr 1) else
                            begin
                             if odd(left) then  zaprmin:=min(zaprmin(left+1,right),y[left]);
                             if not odd(right) then zaprmin:=min(zaprmin(left,right-1),y[right]);
                             end;
                           end;

                                        end;

              procedure udal(ii:longint);
           begin  next[prev[ii]]:=next[ii];prev[next[ii]]:=prev[ii];  end;

                   function nomerr(gr:int64):int64;
                    var ot,aa,bb,cc:int64; fl:boolean;
                         begin
                        aa:=1; bb:=qq;  cc:=aa; fl:=false;
                          while abs(aa-bb)>1 do
                             begin
                               cc:=(aa+bb) shr 1;
                              {  writeln('cc=++ ',cc);
                             } if x[cc]<gr then aa:=cc else bb:=cc;

                             end;
                            {  writeln(' cc= ',cc);
                            } cc:=max(cc-3,0);
                                 repeat inc(cc) until x[cc]>=gr;

                           nomerr:=cc;
                         end;

                   function pprost(pp:int64):boolean;
                    var i,j,t:longint; tt:extended; fl:boolean;
                       begin
                       tt:=pp;
                       tt:=sqrt(tt);
                       fl:=true;
                       for i:=2 to round(tt) do if pp mod i=0 then  fl:=false;
                       pprost:=fl;
                       end;

                   function gl(c:char):boolean;
                          begin
                      if (c='a')or (c='o')or(c='e')or(c='i')or(c='u') then gl:=true else gl:=false;
                          end;

            function slog(d1,d2:zap):zap1;
            var t,tt,p,q:int64; ans:zap;
            begin
              p:=d1.x*d2.y+d1.y*d2.x;
              q:=d1.y*d2.y;
              t:=nod(p,q);
              p:=p div t; q:=q div t;
              ans.x:=p mod modul;ans.y:=q mod modul;

                slog:=@ans;
            end;

            function umn(d1,d2:zap):zap1;
            var t,tt,p,q:int64; ans:zap;
            begin
              p:=d1.x*d2.x;
              q:=d1.y*d2.y;
              t:=nod(p,q);
              p:=p div t; q:=q div t;
              ans.x:=p mod modul;ans.y:=q mod modul;

                umn:=@ans;
            end;

          function bincoef(ii,jj:longint):int64;
        var t1,t2,t3,p1,p2,p3,ot:int64;
        begin
          p1:=fact[ii];
          p2:=fact[jj];
          p3:=fact[ii-jj];
          t2:=degg(p2,modul-2);
          t3:=degg(p3,modul-2);
          ot:=((p1*t2) mod modul*t3) mod modul;
          bincoef:=ot;
        end;

function good(xx,yy,x1,y1,x2,y2:int64):boolean;
var fl:boolean;
begin
   fl:=true;
   if xx<x1 then fl:=false;
   if xx>x2 then fl:=false;
   if yy<y1 then fl:=false;
   if yy>y2 then fl:=false;

 good:=fl;

end;

        begin
       {  assign (input,'D:\Projects\input.txt');reset(input);
          assign (output,'D:\Projects\output.txt'); rewrite(output);
        }
         writeln('NO'); goto 1;

         read(n,m);
         for i:=1 to n do for j:=1 to m do read(dd1[i,j]);
        dd[1,1]:=dd1[i,j];  dd[0,1]:=dd1[1,1];
        for i:=1 to n do for j:=1 to m do
         dd[i,j]:=max(dd1[i,j] and dd[i-1,j],dd1[i,j] and dd[i,j-1]);

         for i:=1 to n do begin for j:=1 to m do write(dd1[i,j],' '); writeln;  end;
                                              writeln;

        for i:=1 to n do begin for j:=1 to m do write(dd[i,j],' '); writeln;  end;

           1: close (output);
         end.

var n : integer;
  begin
      write('No');
end.

var a:integer;
begin
readln(a);
writeln('Yes it is');
end.

var
n,m,i,j,z,h,k:longint;
begin
//readln(n);
writeln('Yes');
end.

var n:qword;
begin
  readln(n);
  write(n);
end.