/*
TASK:trade
LANG:C++
*/
#include<iostream.h>
void AddI(int,int);
float P(int);
class cd
{
      public:
      int num;
      float p;
      bool pset;
      int no;
      int ni;
      short o[1000];
      short i[1000];
      void setp(float sp)
      {
           p=sp;
           pset=true;
      }
      void addo(int n)
      {
           o[no]=n;
           no++;
           AddI(n,num);
      }
      void addi(int n)
      {
           i[ni]=n;
           ni++;
      }
      void cp(void)
      {
           float k=0;
           for(int j=0;j<ni;j++)
           k+=P(i[j]);
           if(ni>0)
           {
                   p=k/ni+(no==0?0.0:(1.0/no));
                   pset=true;
           }
          // if(num==4)
         //  cout<<endl<<"4 pni:"<<P(i[0]);
          // cout<<endl<<"!: "<<i[0]<<","<<i[1]<<endl;
          // cout<<endl<<num<<"-"<<p<<" i:"<<ni<<" o:"<<no<<" k:"<<k<<" p1:"<<P(i[0])<<", p2:"<<P(i[1])<<endl;
      }
      float sp(void)
      {
            if (no>0)
            return 0;
            else
            return price();
      }
      float price(void)
      {
            if(pset)
            return p;
            else
            cp();
            return p;
      }
};
cd d[1001];
void AddI(int n,int num)
{
     d[n].addi(num);
}
float P(int n)
{
      return d[n].price();
}
int main(void)
{
    int n,m,in,out;
    cin>>n;cin>>m;
    for(int j=0;j<=n;j++)
    d[j].num=j;
    d[0].setp(1.0);
    for(int j=0;j<m;j++)
    {
            cin>>out;
            cin>>in;
            d[out].addo(in);
    }
    float r=0;
    for(int j=0;j<n+1;j++)
    {
    if(d[j].sp()<r && d[j].sp()!=0) {r=d[j].sp();};
    if(d[j].sp()!=0 && r==0)
    r=d[j].sp();
    };
    cout<<r;
    for(int h=0;h<6;h++)
    {
            float u=1.0;
            for(int y=0;y<h;y++) u=u*10.0;
            if(r*u==(float)int(r*u))
            {
                             for(int y=0;y<6-h;y++)
                             cout<<"0";
                             break;
            }
    }
    return 0;
}
