a:6:{i:0;s:37725:"						<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">Accommodation</p>
						</div>				
		
				    	<table class="mb15px bdrall bdreee w100 p5px15px formTable">
						<tr class="headVr b">
						<td class="p5px10px">City</td>
						<td class="p5px10px">Hotel Name</td>
						<td class="p5px10px">Star Rating</td>
						</tr>
												</tbody>
						</table>
						</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-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-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-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 "><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 "><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="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><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 spanlist dn"><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="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;}