a:6:{i:0;s:37264:"						<section class="headBg theme2 ">
						<div class="wrap">
						<div class="page-title-inner fo"> 
						<div class="h1"><h1>The Mashobra To Sipur Hike Tour</h1></div>
						<p class="breadcrumb ar uu small"><a href="http://www.indiatoursntrails.com/" title="Home">Home</a>
						
													<b class="ffv p2px">&rsaquo;</b><a href="http://www.indiatoursntrails.com/holiday-packages.htm" title="Holiday Packages">Holiday Packages</a>
								
						<b class="ffv p2px">&rsaquo;</b> The Mashobra To Sipur Hike Tour</p>
						</div>
						</div>
						</section>
										<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
									<div class="fo dt w100"> 
					<div class="dtc vat ttw-detail pr20px pr">					
												<ul class="lsn gallery-slide" id="bxlider_ins">
																	<li>
										<div class="imgFrame m0a dib bdr">
										<div class="imgFrame picBg dtc ac vam lh0">	<a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_16/450512/271120.jpg">
										<div class="imgWidth" style="background-image: url(https://ttw.wlimg.com/package-images/photo-big/dir_16/450512/271120.jpg);background-size:cover;background-position:center;"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_16/450512/271120.jpg"  alt="The Mashobra to Sipur Hike Tour" title="The Mashobra to Sipur Hike Tour" class="imga"  />									</div></a>
										</div>
										</div>
										</li>
																	</ul>
												
					<script>
					var $j = jQuery.noConflict();
					var realSlider= $j("ul#bxlider_ins").bxSlider({
					      speed:500,
					      pager:false,
					      auto: true,
					      slideWidth: 450,
					      slideMargin: 0,
					      nextText:'',
					      prevText:'',
					      infiniteLoop:true,
					      hideControlOnEnd:true,
					      onSlideBefore:function($slideElement, oldIndex, newIndex){
					        changeRealThumb(realThumbSlider,newIndex);
					        
					      }
					      
					    });
					    
					    var realThumbSlider=$j("ul#bxslider-pager").bxSlider({
					      minSlides: 4,
					      maxSlides: 4,
					      slideWidth: 200,
					      slideMargin: 5,
					      moveSlides: 1,
					      pager:false,
					      speed:1000,
					      infiniteLoop:true,
					      hideControlOnEnd:true,
					      nextText:'<span></span>',
					      prevText:'<span></span>',
					      onSlideBefore:function($slideElement, oldIndex, newIndex){
					
					      }
					    });
					    
					    linkRealSliders(realSlider,realThumbSlider);
					    
					    if($j("#bxslider-pager li").length<5){
					      $j("#bxslider-pager .bx-next").hide();
					    }
					
					// sincronizza sliders realizzazioni
					function linkRealSliders(bigS,thumbS){
					  
					  $j("ul#bxslider-pager").on("click","a",function(event){
					    event.preventDefault();
					    var newIndex=$j(this).parent().attr("data-slideIndex");
					        bigS.goToSlide(newIndex);
					  });
					}
					
					//slider!=$thumbSlider. slider is the realslider
					function changeRealThumb(slider,newIndex){
					  
					  var $thumbS=$j("#bxslider-pager");
					  $thumbS.find('.active').removeClass("active");
					  $thumbS.find('li[data-slideIndex="'+newIndex+'"]').addClass("active");
					  
					  if(slider.getSlideCount()-newIndex>=4)slider.goToSlide(newIndex);
					  else slider.goToSlide(slider.getSlideCount()-4);
					
					}
					
					</script>
					</div>
			        <div class="dtc">
			        <p class="b xlarge mb10px">The Mashobra to Sipur Hike Tour</p>
					
											<p class="mb5px"><b>Duration :</b> 
						1 Day 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Shimla</p>
												<div class="fo mt20px mb20px xxlarge">
						<p class="xxlarge b dif mb2px">Price</p>
						<p class="xxsmall">On Request</p>
						</div>
												<div class="mt12px mb7px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.indiatoursntrails.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="The Mashobra to Sipur Hike Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px ts0 xxlarge dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="179676"/>
						</form>
						
												</div>
											<br/>
					</div>       
					</div>
											<div class="mt30px mb30px">
						<div class="b xxlarge mb10px">
								   					Overview
		   											</div>					
						<p class="aj">Early morning drive from Shimla to the picturesque Mashobra valley which is mirrored by the tall Shali Peak (3200m). The route holds thick woods where practically every tree of the region grows - Himalayan Cedar (the almost legendary ‘Deodar’), Spruce, Oak, Rhododendron, Horse-Chestnut, Birch and Pine. Depending on the time of year, a variety of wildflowers grace the hillsides - the rhododendrons flower a dark red in spring, summer has banks of roses, daises and buttercups, the monsoons speckle the luxuriant grass with lilies-of-the-valley and peonies. Through the year, flitting butterflies stab quick flashes of color. The trail crosses picture-perfect hamlets where the word ‘time’ seems to mean only the seasons and the passing years - and where life has followed a steady pace for centuries. Trace fast flowing streams, cross a ‘sacred grove’ whose majestic trees have stood undisturbed for centuries, watch village craftsmen at work, listen to legends that seem as old as the hills - and in a single day, take a lifetime’s memory of some of the marvels that the lower Himalayas hold.<br />
<br />
Through woods of Himalayan Cedar and Spruce, the path to Seepur takes a steady dip down the valley. Past fields and orchards and wood and slate houses one arrives at the glade of Seepur - which the vicerene Lady Lytton called a “tea-cup shaped valley” and was popular for midnight picnics in the days of the Raj. Several slim streams fed by fresh-water springs nurture the soft grass of Seepur. The glade is held sacred to the local deity, Seep who ‘visits’ the spot at select times of year. Shaded by colossal Cedars, a delightful little temple built in the local style with stone and wood, rests on an edge. Smaller shrines merging with the woods are also there. This is the site of an annual fair held over the second weekend of April - and is a time for local matchmaking.<br />
From Seepur the decline eases out to the tiny village of Shali, which holds a dozen charmingly rustic structures - and is probably named in honour of the facing peak. Here, the hike-path that snakes along the hill holds a bifurcation, and along a mild incline the route takes a right. This also marks the end of the descent. The view on the facing hill has terraced fields and age-old villages. Along the narrow path, the only sounds one is likely to hear are of one’s own breathing and the crunch of boots over scattered cones. The silence only punctuated by the song of a Himalayan Thrush or Barbet.<br />
After Shali comes the home of the deity Seep at Deothi. Local legend has it that the deity was brought with the erstwhile rulers of the Koti state - in whose former territories the hike lies - when they migrated here from Kutlehar, which lies north-west. The temple was first established in the village of Nehra. This tract was then ruled by mavis, local strongmen who wished to share in the worship of Seep. When this was refused, the mavis started desecrating the temple. ‘Speaking’ through his worshippers, Seep declared that he wanted to move from Nehra and a day would come when a long line of ants would march through the village and where they finally circled a mound, was where he wished to reside. The ants came and circled a mound in what is now the village of Deothi - and where Seep was ceremoniously installed. The identity of this local deity has steadily been merged with that of Lord Shiva, the destroyer in the Hindu trinity. Styled as a  tall gabled mushroom and belonging to an architectural genre unique to this part of the world, Seep’s temple rests at the edge of a small spur and is surrounded by other structures that ‘belong’ to him - a storehouse, a pavilion and a room for folk musicians.<br />
Cameo appearances of pomegranate trees and tumbling streams that come close to becoming waterfalls, fresh water springs embellished with utilitarian stonework and a little bridge mark the passage to Mulkoti. Walls of shale and quartzite, now reduced to rubble, hold the remains of the little fort of the Raja of Koti where, centuries ago, the Koti rulers first established themselves. Today only the wooden gate and its brass knockers evoke the memory of their stay. The temple harks back to those days and is held in veneration as the seat of several local deities.<br />
Half an hour’s climb from Mulkoti lies the village of Kanda and past this the path crosses the hamlets of Kanda, Ghayabo and Kaneer. The stretch is through terraced fields of assorted vegetables, corn and wheat. Blossom draped or fruit-laden orchards of apples, plums, apricots and peaches offset the fields. Every turn of the track exposes a fresh vista of the valley and the evergreen woods.<br />
The lunch stop is at Kanda, where one can take some time to see some local craftsmanship - and even supplement the meal with fresh fruits and salads selected from the fields and orchards.<br />
After Kaneer begins the sharp hour-long ascent to the century-old ‘Dak bungalow’, a rest house for travellers. The forests become more primeval and the Deodars, ferns and lichens seem to hold their secrets closer. With luck on ones side, one may encounter pheasants and several other birds and even deer, martens and flying squirrels. The area also has leopards, bears and snakes - but the possibility of sighting one is remote. <br />
<br />
The vehicle will be waiting to return one to the comfort of ones Hotel.<br />
Distance Walking 12kms,</p>
						</div>
														<div class="mt30px b xlarge">
												   					Detailed Tour Itinerary
				   													</div>		   
								<br/>
																			<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 1											
											:</b> Shimla										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												Early morning drive from Shimla to the picturesque Mashobra valley which is mirrored by the tall Shali Peak (3200m). The route holds thick woods where practically every tree of the region grows - Himalayan Cedar (the almost legendary ‘Deodar’), Spruce, Oak, Rhododendron, Horse-Chestnut, Birch and Pine. Depending on the time of year, a variety of wildflowers grace the hillsides - the rhododendrons flower a dark red in spring, summer has banks of roses, daises and buttercups, the monsoons speckle the luxuriant grass with lilies-of-the-valley and peonies. Through the year, flitting butterflies stab quick flashes of color. The trail crosses picture-perfect hamlets where the word ‘time’ seems to mean only the seasons and the passing years - and where life has followed a steady pace for centuries. Trace fast flowing streams, cross a ‘sacred grove’ whose majestic trees have stood undisturbed for centuries, watch village craftsmen at work, listen to legends that seem as old as the hills - and in a single day, take a lifetime’s memory of some of the marvels that the lower Himalayas hold.<br />
<br />
Through woods of Himalayan Cedar and Spruce, the path to Seepur takes a steady dip down the valley. Past fields and orchards and wood and slate houses one arrives at the glade of Seepur - which the vicerene Lady Lytton called a “tea-cup shaped valley” and was popular for midnight picnics in the days of the Raj. Several slim streams fed by fresh-water springs nurture the soft grass of Seepur. The glade is held sacred to the local deity, Seep who ‘visits’ the spot at select times of year. Shaded by colossal Cedars, a delightful little temple built in the local style with stone and wood, rests on an edge. Smaller shrines merging with the woods are also there. This is the site of an annual fair held over the second weekend of April - and is a time for local matchmaking.<br />
From Seepur the decline eases out to the tiny village of Shali, which holds a dozen charmingly rustic structures - and is probably named in honour of the facing peak. Here, the hike-path that snakes along the hill holds a bifurcation, and along a mild incline the route takes a right. This also marks the end of the descent. The view on the facing hill has terraced fields and age-old villages. Along the narrow path, the only sounds one is likely to hear are of one’s own breathing and the crunch of boots over scattered cones. The silence only punctuated by the song of a Himalayan Thrush or Barbet.<br />
After Shali comes the home of the deity Seep at Deothi. Local legend has it that the deity was brought with the erstwhile rulers of the Koti state - in whose former territories the hike lies - when they migrated here from Kutlehar, which lies north-west. The temple was first established in the village of Nehra. This tract was then ruled by mavis, local strongmen who wished to share in the worship of Seep. When this was refused, the mavis started desecrating the temple. ‘Speaking’ through his worshippers, Seep declared that he wanted to move from Nehra and a day would come when a long line of ants would march through the village and where they finally circled a mound, was where he wished to reside. The ants came and circled a mound in what is now the village of Deothi - and where Seep was ceremoniously installed. The identity of this local deity has steadily been merged with that of Lord Shiva, the destroyer in the Hindu trinity. Styled as a tall gabled mushroom and belonging to an architectural genre unique to this part of the world, Seep’s temple rests at the edge of a small spur and is surrounded by other structures that ‘belong’ to him - a storehouse, a pavilion and a room for folk musicians.<br />
Cameo appearances of pomegranate trees and tumbling streams that come close to becoming waterfalls, fresh water springs embellished with utilitarian stonework and a little bridge mark the passage to Mulkoti. Walls of shale and quartzite, now reduced to rubble, hold the remains of the little fort of the Raja of Koti where, centuries ago, the Koti rulers first established themselves. Today only the wooden gate and its brass knockers evoke the memory of their stay. The temple harks back to those days and is held in veneration as the seat of several local deities.<br />
Half an hour’s climb from Mulkoti lies the village of Kanda and past this the path crosses the hamlets of Kanda, Ghayabo and Kaneer. The stretch is through terraced fields of assorted vegetables, corn and wheat. Blossom draped or fruit-laden orchards of apples, plums, apricots and peaches offset the fields. Every turn of the track exposes a fresh vista of the valley and the evergreen woods.<br />
The lunch stop is at Kanda, where one can take some time to see some local craftsmanship - and even supplement the meal with fresh fruits and salads selected from the fields and orchards.<br />
After Kaneer begins the sharp hour-long ascent to the century-old ‘Dak bungalow’, a rest house for travellers. The forests become more primeval and the Deodars, ferns and lichens seem to hold their secrets closer. With luck on ones side, one may encounter pheasants and several other birds and even deer, martens and flying squirrels. The area also has leopards, bears and snakes - but the possibility of sighting one is remote. <br />
<br />
The vehicle will be waiting to return one to the comfort of ones Hotel.<br />
Distance Walking 12kms,															
														   
											</div> 
											</div>
																			<script>
								jQuery(document).ready(function() {
									//jQuery('.product-detail').css('display','none');
								    jQuery(".sub-title").click(function() {
								        var $this = jQuery(this);
										  jQuery('.w-title').addClass('h15px',400);
								          $this.find('.w-title').removeClass('h15px',400);
										  jQuery('.product-detail').slideUp();
								          $this.next().slideDown();
								          if($this.find('i').hasClass('fa-angle-up')){
								          	$this.find('i').removeClass('fa-angle-up').addClass('fa-angle-down');
								          } else {
								          	$this.find('i').removeClass('fa-angle-down').addClass('fa-angle-up');
								          }
								        });
									});
								</script>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>EP (No Meal)</li>
																			</ul>
								</div>
																<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Payments Terms</p>
								</div>
								
								<ul><li>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.</li></ul>						
								</div>
														<div class="data mt20px p15px">            
						<div class="mb7px"> 
						<p class="b xlarge mb10px dib">Cancellation &amp; Refund Policy</p>
						</div>
						
						<ul><li>* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date.</li></ul>						
						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.indiatoursntrails.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="The Mashobra to Sipur Hike Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="179676"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/packages-in-shimla.htm" title="Packages in Shimla">Shimla</a> <b class="alpha50 bn small">(13)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/packages-in-manali.htm" title="Packages in Manali">Manali</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/packages-in-dharamshala.htm" title="Packages in Dharamshala">Dharamshala</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/packages-in-solan.htm" title="Packages in Solan">Solan</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/packages-in-jammu.htm" title="Packages in Jammu">Jammu</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/packages-in-parwanoo.htm" title="Packages in Parwanoo">Parwanoo</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/packages-in-kullu.htm" title="Packages in Kullu">Kullu</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/packages-in-new-delhi.htm" title="Packages in New Delhi">New Delhi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/packages-in-palampur.htm" title="Packages in Palampur">Palampur</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/packages-in-kalka.htm" title="Packages in Kalka">Kalka</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.indiatoursntrails.com/packages-in-ambala.htm" title="Packages in Ambala">Ambala</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.indiatoursntrails.com/packages-in-chandigarh-city.htm" title="Packages in Chandigarh City">Chandigarh City</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.indiatoursntrails.com/packages-in-barbil.htm" title="Packages in Barbil">Barbil</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.indiatoursntrails.com/packages-in-manikaran.htm" title="Packages in Manikaran">Manikaran</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.indiatoursntrails.com/packages-in-amritsar.htm" title="Packages in Amritsar">Amritsar</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/hill-station-holidays-catid.htm" title="Hill Station Packages">Hill Station</a> <b class="alpha50 bn small">(13)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/river-rafting-holidays-catid.htm" title="River Rafting Packages">River Rafting</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/cycling-holidays-catid.htm" title="Cycling Packages">Cycling</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/wildlife-nature-holidays-catid.htm" title="Wildlife and Nature Packages">Wildlife and Nature</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/forts-palaces-holidays-catid.htm" title="Forts and Palaces Packages">Forts and Palaces</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/religious-pilgrimage-holidays-catid.htm" title="Religious & Pilgrimage Packages">Religious & Pilgrimage</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.indiatoursntrails.com/valley-holidays-catid.htm" title="Valley Packages">Valley</a> <b class="alpha50 bn small">(1)</b></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
										<br />
						<div class="row1"> 
						<div class="col-1"> 
						<div class="mt30px">
						<p class="xxlarge b pb10px bdrB db"> Similar Tour Packages for Shimla</p>
						</div>
						<br/>
						<div class="cf_3img">
						<ul class="lsn m0px p0px fo idv_eqheight cols_similar">
											
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.indiatoursntrails.com/tour-packages/shimla-manali-mandi-dharamshala-dalhausie-pathankot-package.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_16/450512/271189.jpg"  alt="Shimla, Manali,Mandi,Dharamshala,Dalhausie, Pathankot Package" title="Shimla, Manali,Mandi,Dharamshala,Dalhausie, Pathankot Package"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.indiatoursntrails.com/tour-packages/shimla-manali-mandi-dharamshala-dalhausie-pathankot-package.htm" title="Shimla, Manali,Mandi,Dharamshala,Dalhausie, Pathankot Package"><h3>Shimla, Manali,mandi,dharamshala,dalhausie..</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								10 Nights / 11 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Kullu, Manali, Palampur, Shimla, Solan, ..</p>
															<div class="mt10px small">
							<form name="pkg_179687" id="pkg_179687" method="post" action="http://www.indiatoursntrails.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.indiatoursntrails.com/tour-packages/shimla-manali-mandi-dharamshala-dalhausie-pathankot-package.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Shimla, Manali,Mandi,Dharamshala,Dalhausie, Pathankot Package - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="179687"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.indiatoursntrails.com/tour-packages/ambala-chandigarh-shimla-rewalsar-manali-manikaran-chandigarh-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_16/450512/271170.jpg"  alt="Ambala/Chandigarh - Shimla - Rewalsar - Manali - Manikaran Tour" title="Ambala/Chandigarh - Shimla - Rewalsar - Manali - Manikaran Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.indiatoursntrails.com/tour-packages/ambala-chandigarh-shimla-rewalsar-manali-manikaran-chandigarh-tour.htm" title="Ambala/Chandigarh - Shimla - Rewalsar - Manali - Manikaran Tour"><h3>Ambala/chandigarh - Shimla - Rewalsar - Ma..</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								6 Nights / 7 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Chandigarh City, Ambala, Manali, Manikar..</p>
															<div class="mt10px small">
							<form name="pkg_179684" id="pkg_179684" method="post" action="http://www.indiatoursntrails.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.indiatoursntrails.com/tour-packages/ambala-chandigarh-shimla-rewalsar-manali-manikaran-chandigarh-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Ambala/Chandigarh - Shimla - Rewalsar - Manali - Manikaran Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="179684"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.indiatoursntrails.com/tour-packages/shimla-manali-kalka-chandigarh-package.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_16/450512/271176.jpg"  alt="Shimla Manali Kalka/chandigarh  Package" title="Shimla Manali Kalka/chandigarh  Package"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.indiatoursntrails.com/tour-packages/shimla-manali-kalka-chandigarh-package.htm" title="Shimla Manali Kalka/chandigarh  Package"><h3>Shimla Manali Kalka/chandigarh  Package</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								6 Nights / 7 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Manali, Shimla, Kalka, Barbil</p>
															<div class="mt10px small">
							<form name="pkg_179685" id="pkg_179685" method="post" action="http://www.indiatoursntrails.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.indiatoursntrails.com/tour-packages/shimla-manali-kalka-chandigarh-package.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Shimla Manali Kalka/chandigarh  Package - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="179685"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.indiatoursntrails.com/tour-packages/the-shali-tibba-hike-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_16/450512/271116.jpg"  alt="The Shali Tibba Hike Tour" title="The Shali Tibba Hike Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.indiatoursntrails.com/tour-packages/the-shali-tibba-hike-tour.htm" title="The Shali Tibba Hike Tour"><h3>The Shali Tibba Hike Tour</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								2 Nights / 3 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Shimla, Solan, Parwanoo, Dharamshala, Ja..</p>
															<div class="mt10px small">
							<form name="pkg_179674" id="pkg_179674" method="post" action="http://www.indiatoursntrails.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.indiatoursntrails.com/tour-packages/the-shali-tibba-hike-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="The Shali Tibba Hike Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="179674"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.indiatoursntrails.com/tour-packages/the-retreat-hike-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_16/450512/271124.jpg"  alt="The Retreat Hike Tour" title="The Retreat Hike Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.indiatoursntrails.com/tour-packages/the-retreat-hike-tour.htm" title="The Retreat Hike Tour"><h3>The Retreat Hike Tour</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								1 Day 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Shimla</p>
															<div class="mt10px small">
							<form name="pkg_179677" id="pkg_179677" method="post" action="http://www.indiatoursntrails.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.indiatoursntrails.com/tour-packages/the-retreat-hike-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="The Retreat Hike Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="179677"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.indiatoursntrails.com/tour-packages/shimla-heritage-walk1-day-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_16/450512/271103.jpg"  alt="Shimla Heritage Walk (1 Day) Tour" title="Shimla Heritage Walk (1 Day) Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.indiatoursntrails.com/tour-packages/shimla-heritage-walk1-day-tour.htm" title="Shimla Heritage Walk (1 Day) Tour"><h3>Shimla Heritage Walk (1 Day) Tour</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								1 Day 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Shimla</p>
															<div class="mt10px small">
							<form name="pkg_179672" id="pkg_179672" method="post" action="http://www.indiatoursntrails.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.indiatoursntrails.com/tour-packages/shimla-heritage-walk1-day-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Shimla Heritage Walk (1 Day) Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="179672"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
															
						</ul>
						</div>
						</div> 		  
						<br>
						</div>  
						<br />
										
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:59:"Book The Mashobra to Sipur Hike Tour - 1 Days Tour Packages";i:2;s:109:"book the mashobra to sipur hike tour - 1 days tour packages, hill station tour packages, shimla tour packages";i:3;s:146:"India Tours-n-trails offers The Mashobra to Sipur Hike Tour - 1 Days tour package, budget Hill Station tour packages for Shimla at exciting price.";i:4;s:5827:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Shimla"        
		                 },
		      "description": "Early morning drive from Shimla to the picturesque Mashobra valley which is mirrored by the tall Shali Peak (3200m). The route holds thick woods where practically every tree of the region grows - Himalayan Cedar (the almost legendary ‘Deodar’), Spruce, Oak, Rhododendron, Horse-Chestnut, Birch and Pine. Depending on the time of year, a variety of wildflowers grace the hillsides - the rhododendrons flower a dark red in spring, summer has banks of roses, daises and buttercups, the monsoons speckle the luxuriant grass with lilies-of-the-valley and peonies. Through the year, flitting butterflies stab quick flashes of color. The trail crosses picture-perfect hamlets where the word ‘time’ seems to mean only the seasons and the passing years - and where life has followed a steady pace for centuries. Trace fast flowing streams, cross a ‘sacred grove’ whose majestic trees have stood undisturbed for centuries, watch village craftsmen at work, listen to legends that seem as old as the hills - and in a single day, take a lifetime’s memory of some of the marvels that the lower Himalayas hold.

Through woods of Himalayan Cedar and Spruce, the path to Seepur takes a steady dip down the valley. Past fields and orchards and wood and slate houses one arrives at the glade of Seepur - which the vicerene Lady Lytton called a “tea-cup shaped valley” and was popular for midnight picnics in the days of the Raj. Several slim streams fed by fresh-water springs nurture the soft grass of Seepur. The glade is held sacred to the local deity, Seep who ‘visits’ the spot at select times of year. Shaded by colossal Cedars, a delightful little temple built in the local style with stone and wood, rests on an edge. Smaller shrines merging with the woods are also there. This is the site of an annual fair held over the second weekend of April - and is a time for local matchmaking.
From Seepur the decline eases out to the tiny village of Shali, which holds a dozen charmingly rustic structures - and is probably named in honour of the facing peak. Here, the hike-path that snakes along the hill holds a bifurcation, and along a mild incline the route takes a right. This also marks the end of the descent. The view on the facing hill has terraced fields and age-old villages. Along the narrow path, the only sounds one is likely to hear are of one’s own breathing and the crunch of boots over scattered cones. The silence only punctuated by the song of a Himalayan Thrush or Barbet.
After Shali comes the home of the deity Seep at Deothi. Local legend has it that the deity was brought with the erstwhile rulers of the Koti state - in whose former territories the hike lies - when they migrated here from Kutlehar, which lies north-west. The temple was first established in the village of Nehra. This tract was then ruled by mavis, local strongmen who wished to share in the worship of Seep. When this was refused, the mavis started desecrating the temple. ‘Speaking’ through his worshippers, Seep declared that he wanted to move from Nehra and a day would come when a long line of ants would march through the village and where they finally circled a mound, was where he wished to reside. The ants came and circled a mound in what is now the village of Deothi - and where Seep was ceremoniously installed. The identity of this local deity has steadily been merged with that of Lord Shiva, the destroyer in the Hindu trinity. Styled as a  tall gabled mushroom and belonging to an architectural genre unique to this part of the world, Seep’s temple rests at the edge of a small spur and is surrounded by other structures that ‘belong’ to him - a storehouse, a pavilion and a room for folk musicians.
Cameo appearances of pomegranate trees and tumbling streams that come close to becoming waterfalls, fresh water springs embellished with utilitarian stonework and a little bridge mark the passage to Mulkoti. Walls of shale and quartzite, now reduced to rubble, hold the remains of the little fort of the Raja of Koti where, centuries ago, the Koti rulers first established themselves. Today only the wooden gate and its brass knockers evoke the memory of their stay. The temple harks back to those days and is held in veneration as the seat of several local deities.
Half an hour’s climb from Mulkoti lies the village of Kanda and past this the path crosses the hamlets of Kanda, Ghayabo and Kaneer. The stretch is through terraced fields of assorted vegetables, corn and wheat. Blossom draped or fruit-laden orchards of apples, plums, apricots and peaches offset the fields. Every turn of the track exposes a fresh vista of the valley and the evergreen woods.
The lunch stop is at Kanda, where one can take some time to see some local craftsmanship - and even supplement the meal with fresh fruits and salads selected from the fields and orchards.
After Kaneer begins the sharp hour-long ascent to the century-old ‘Dak bungalow’, a rest house for travellers. The forests become more primeval and the Deodars, ferns and lichens seem to hold their secrets closer. With luck on ones side, one may encounter pheasants and several other birds and even deer, martens and flying squirrels. The area also has leopards, bears and snakes - but the possibility of sighting one is remote. 

The vehicle will be waiting to return one to the comfort of ones Hotel.
Distance Walking 12kms,",
		      "name": "The Mashobra to Sipur Hike Tour",
		      "telephone": "+91-9817016580"
		    }
		    </script>
			";i:5;N;}