// Brainfuck Interpreter by Charles Ray Shisler III

#include <iostream>

#include <fstream>

#define y int&s,char*v,int*a,std::istream&f,int&p,char&c

void x ( y ) { v [ s ] = ( ( v [ s ] < 255 ) ? v [ s ] + 1 : 0 ) ; } // +

void t ( y ) { s = ( ( s < 99998 ) ? s + 1 : 0 ) ; } // >

void q ( y ) { v [ s ] = ( ( v [ s ] > 0 ) ? v [ s ] - 1 : 255 ) ; } // -

void k ( y ) { s = ( ( s > 0 ) ? s - 1 : 99998 ) ; } // <

void e ( y ) { std :: cout << v [ s ] ; } // .

void h ( y ) { char e = ( char ) std :: cin . get ( ) ; // ,

v [ s ] = ( e == 10 ) ? 0 : e ; }

void o ( y ) { if ( v [ s ] ) a [ p ++ ] = f. tellg ( ) ; // [

else for ( int d = 0 ; c ! = 93 && d > 0 ; d = c == 91 ? d + 1 : c == 93 ? d - 1 : d ) f. get ( c ) ; }

void i ( y ) { if ( v [ s ] ) f. seekg ( a [ -- p ] - 1 ) ; } // ]

void w ( y ) { return ; } // NOP

int main ( int g, char ** r ) {

if ( g < 2 ) return 1 ;

std :: ifstream f ( r [ 1 ] ) ;

if ( ! f ) return 1 ;

char c = 0 ,v [ 99999 ] = { 0 } ;

void ( * n ) ( int & , char * , int * ,std :: istream & , int & , char & ) = & w ;

for ( int s = 0 ,p = 0 ,a [ 1000 ] = { 0 } ; f. peek ( ) ! = - 1 ; f. get ( c ) ,n = ( c == 43 ? & x : c == 45 ? & \

q : c == 62 ? & t : c == 60 ? & k : c == 46 ? & e : c == 44 ? & h : c == 91 ? & o : c == 93 ? & i : & w ) ) ( * n ) ( s,v,a,f,p,c ) ;

f. close ( ) ;