#include  < iostream >
#include 
< queue >
#define  MAXN 101
using   namespace  std;

struct  type1 {
    
int  v, w;
    
bool   operator   <  ( const  type1 &  node)  const  {
        
return  w  >  node.w;
    }
};

int  MAP[MAXN][MAXN];
int  D[MAXN];
/* ******************************** */
int  dijk( int  s,  int  t,  int  n)
{
    priority_queue
< type1 >  q;
    
bool  mk[MAXN]  =  { false };
    type1 e 
=  {s,  0 }, ne;
    
int  i, tmp;
    D[s] 
=   0 ;
    q.push(e);
    
while  ( ! q.empty())
    {
        e 
=  q.top();
        q.pop();
        
if  (mk[e.v])  continue ;
        
if  (e.v  ==  t)  return  D[t];
        
for  (mk[e.v]  =   true , i  = 1 ; i  < =n; i ++ )
            
if  ( ! mk[i]  &&  MAP[e.v][i]  <  INT_MAX  &&  (tmp  =  e.w  +  MAP[e.v][i])  <  D[i])
            {
                D[ne.v 
=  i]  =  ne.w  =  tmp;
                q.push(ne);
            }
    }
    
return  D[t];
}
/* *************************************** */
int  main()
{   
     
     
for  (i  =   1 ; i  <=  n; i ++ )
            
for  (D[i]  =  INT_MAX, j  =   1 ; j  <=  n; j ++ )
                MAP[i][j] 
=  INT_MAX;
     
}