using System;

namespace ConsoleApp3
{
	class Program
	{
		static int MinBrojNavijaca( int[,] guzva, int i, int j, int x, int y)
		{
			if(i==guzva.GetLength(0) || j==guzva.GetLength( 1 ) || (i==x && j==y))
			{
				return int.MaxValue;
			}
			if( i==guzva.GetLength( 0 )-1 && j==guzva.GetLength( 1 )-1 )
		    {
				return guzva[i,j]; 
			}
			var guzvaDesno = MinBrojNavijaca( guzva, i, j + 1 , x, y );
			var guzvaDole = MinBrojNavijaca( guzva, i + 1 , j, x, y );
			if( guzvaDesno == int.MaxValue && guzvaDole == int.MaxValue )
			{
				return int.MaxValue;
			}
			else if(guzvaDesno > guzvaDole)
			{
				return guzvaDole + guzva[ i, j ];
			}
			else
			{
				return guzvaDesno + guzva[ i, j ];
			}
		}
		static void Main( string[] args )
		{
			string[] nm = Console.ReadLine().Split();
			int n = Convert.ToInt32( nm[ 0 ] );
			int m = Convert.ToInt32( nm[ 1 ] );
			int[,] guzva = new int[ n, m ];
			for( int i = 0; i < n; i++ )
			{
				string[] x = Console.ReadLine().Split();
				for( int j = 0; j < m; j++ )
				{
					guzva[i,j] = Convert.ToInt32( x[ j ] );
				}
			}
			int q = Convert.ToInt32( Console.ReadLine() );
			int[,] blokada = new int[ q, 2 ];
			for( int i = 0; i < q; i++ )
			{
				string[] xy = Console.ReadLine().Split();
				blokada[ i, 0 ] = Convert.ToInt32( xy[ 0 ] );
				blokada[ i, 1 ]  = Convert.ToInt32( xy[ 1 ] );
			}
			for( int i = 0; i < q; i++ )
			{
				int najmanjaGuzva = MinBrojNavijaca( guzva, 0, 0, blokada[ i, 0 ] - 1, blokada[ i, 1 ] - 1 );
				Console.WriteLine(najmanjaGuzva);
			}
		}
	}
}