a:6:{i:0;s:14183:"				<div class="h1"><h1>Himachal Tour With 2 Adults 1 Kid</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.tanishhimachaltours.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.tanishhimachaltours.com/travel-packages.htm" title="Travel Packages">Travel Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Himachal Tour With 2 Adults 1 Kid</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Chandigarh City, Kufri, Manali, Manikaran, Shimla</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 26500 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.tanishhimachaltours.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Himachal Tour With 2 Adults 1 Kid - 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="128047"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_15/438757/205189.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/438757/205189.jpg"  width="150" height="150"    alt="Himachal Tour With 2 Adults 1 Kid" title="Himachal Tour With 2 Adults 1 Kid" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Meal plan : Lunch <br />
NON VEG MEAL<br />
Cabs : Non-AC <br />
Airfare <br />
Others : Other Exclusions (Car at disposal <br />
All kind of personal expenses such as tips, laundry, telephone bills and beverages. <br />
It also does not include any meals unless and otherwise specifically mentioned.. <br />
Optional, suggested or unspecified activities. <br />
Camera fee (still or movie)<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> ARRIVAL
								</p>
								<p class="aj">Start your journey from Chandigarh. Drive your way to Shimla in a private vehicle. Reach Shimla and check in at the Hotel. Rest of the evening your own leisure and visit to some temples. Dinner and overnight stay at the Hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> SHIMLA LOCAL SIGHT SEEN AND KUFRI
								</p>
								<p class="aj">Early morning after breakfast, you are taken on an excursion to the skiing resort of Kufri,Kufri - (Altitude 2622 m) known for its ski runs kufri. 16kms away from shimla, attracts the largest number of tourists who come to shimla it has a backdrop of peaks covered with snow. <br />
Kufri Fun Campus - Himalayan Nature Park - Green Valley<br />
Local sight scenes of Shimla <br />
Viceregal Lodge <br />
The mall <br />
Jakhoo temple <br />
Ridge Maidan. <br />
Overnight stay at Shimla.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> SHIMLA MANALI
								</p>
								<p class="aj">After early breakfast we move towards Manali. On the way sight - seeing like Sundernagar Lake, Pandoh dam, Vaishno Devi Temple, Kullu.The cab will run on road besides beautiful river Beas and also you will feel the actual beauty of huge mountains and valleys.You will also met with a Tunnel Known as AUT tunnel which is 3 kms long. Till Manali you will feel the fresh airs and clatter of river Beas after reached Manali Check in to Hotel.Overnight stay at Manali.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> MANALI LOCAL
								</p>
								<p class="aj">After breakfast cab will move towards local places of Manali. <br />
Hadimba Temple <br />
Situated atop a hillock the Hidimba Devi Temple is surrounded by thick deodar forests and was built in 1553. The temple is dedicated to the Rakshasa Hidimba who was also the wife of the Pandava Bhima. The temple structure is built in a distinctive architectural style that somewhat crosses Indian architecture with the one employed in the Buddhist monasteries.<br />
The structure is made primarily of wood and 70 meters from the temple also lays the temple dedicated to Ghatotkacha, the son of Bhima and Hidimba and a hero of the Mahabharatha war. <br />
Vashist Hot Water Springs <br />
The place lies at a distance of 4 - 5 kilometers from Manali and is situated across the Beas River. The village of Vashist is famous for its sulphurous Hot Water Springs and is a popular attraction among tourist and pilgrims. The springs can also be enjoyed in privacy at the Turkish - styles bath houses which are available here. The village is also famous for its stone temples which are dedicated to a local saint Vashishta.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> MANALI SOLANG
								</p>
								<p class="aj">After breakfast, visit the Solang Valley the place is also well known for adventurous sports whether summer sports or winter sports. Parachuting, skating/skiing, zorbing and paragliding are some of the famous sports played here. Few ski agencies also offer different courses as well as equipment to enjoy but these agencies are active only in winter seasons since snow melts in summer season <br />
Overnight stay at hotel</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> MANALI-KASOL- MANIKARAN CHANDIGARH DROP
								</p>
								<p class="aj">Today morning after breakfast check out from hotel and depart with your journey back to Chandigarh <br />
On arrival in Kullu you can do River Rafting (on your own expenses if it is operational) and shopping for World famous Pashmina Shawls. Then visit Vaishno Devi Temple and local market. After that proceed towards Manikaran Sahib, On arrival at Manikkaran Sahib take a bath in Natural Hot Springs of Sulphur and then visit Old Shiv Temple, Ram Temple and Gurudwara Manikaran Sahib. Manikaran is located in the Parvati valley<br />
(Altitude of 1760 Meters) and along the river Beas and we will back to Chandigarh & Last Drop. <br />
Tour Ends.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Meals</li>
																		<li>Sightseeing</li>
																<li>Meal plan : Breakfast ,Dinner.</li><li>
Cabs : AC ( Note : A/C will won’t be operational in hills )</li><li>
Vehicle : Swift Dzire/Etios</li>
													</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Meal plan : Lunch </li><li>
NON VEG MEAL</li><li>
Cabs : Non-AC </li><li>
Airfare </li><li>
Others : Other Exclusions (Car at disposal </li><li>
All kind of personal expenses such as tips, laundry, telephone bills and beverages. </li><li>
It also does not include any meals unless and otherwise specifically mentioned.. </li><li>
Optional, suggested or unspecified activities. </li><li>
Camera fee (still or movie)</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>3 may - 8 may<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<ul>
	<li>The rates are subjects to change without any prior notice. - Accommodation in the itinerary at the mentioned hotels or the similar hotels.</li>
	<li>The confirmation is subjects to availability. - Cost incidental to any change in the itinerary/ stay on account of flight cancellation due to bad Weather, ill health, strike, roadblocks and/or any factors beyond control. - It is a suggestion for you that please book this offer as soon as possible because we are not holding any booking and it is totally depend on the availability of rooms and flight.</li>
	<li>From the booking date till 30 days prior to the departure date, 30 % of the package cost is chargeable.</li>
	<li>From 30 days to 15 days prior to the departure date, 50 % of the package cost is chargeable.</li>
	<li>From 15 days to 7 days prior to departure date, 75 % of the package cost is chargeable.</li>
	<li>For cancellations made within 5 days prior to the departure date, 100% of the package cost is chargeable.</li>
	<li>No refund will be made for any unused accommodation, missed meals, transportation segments, sightseeing tours or any other service due to Bad weather, ill health, Strike, Road Blocks or any other factor beyond our Control. Such unused items are neither refundable nor exchangeable. - Room allocation is done by the hotel depending upon availability at the time of check - in. the category of room as specified on your confirmation voucher.</li>
	<li>No refund shall be claimed, if the services &amp; amenities of hotel were not up to your expectations, it will be considered on case to case basis.</li>
	<li>Room Heater charges will be extra charged as per hotel rates in every hotel.</li>
	<li>Meal plan will be veg in every hotel.( Non veg will be included on travellers request ).</li>
	<li>Rohtang Pass Permit and sighscene will be provided as per govt. Terms and conditions.</li>
	<li>Below 5 Years child will be complementry.More then 5 yrs Child will be charged as adults cost.</li>
	<li>All payments of package cost should be cleared before Last day check out of the tour.</li>
</ul>						
    	<p class="h dif xlarge b mb5px">Cost</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">CHECK-IN</td>
				<td class="headHr p5px b">CHECK-OUT</td>
				<td class="headHr p5px b">NIGHTS</td>
				<td class="headHr p5px b">LOCATION</td>
				<td class="headHr p5px b">HOTEL NAME</td>
				<td class="headHr p5px b">ROOM TYPE</td>
				<td class="headHr p5px b">MEAL PLAN</td>
			</tr>
			<tr>
				<td class="data p5px">03 May 2018</td>
				<td class="data p5px">05 May 2018</td>
				<td class="data p5px">2</td>
				<td class="data p5px">ADIV REGENCY</td>
				<td class="data p5px">SHIMLA</td>
				<td class="data p5px">Deluxe</td>
				<td class="data p5px">Mapi</td>
			</tr>
			<tr>
				<td class="data p5px">05 May 2018</td>
				<td class="data p5px">08 May 2018</td>
				<td class="data p5px">3</td>
				<td class="data p5px">KASHYAP</td>
				<td class="data p5px">MANALI</td>
				<td class="data p5px">Deluxe</td>
				<td class="data p5px">Mapi</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.tanishhimachaltours.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Himachal Tour With 2 Adults 1 Kid - 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="128047"/>
						</form>
						</div>
						
						";i:1;s:72:"Book Himachal Tour With 2 Adults 1 Kid - 5 Nights / 6 Days Tour Packages";i:2;s:165:"book himachal tour with 2 adults 1 kid - 5 nights / 6 days tour packages, hill station tour packages, chandigarh city, kufri, manali, manikaran, shimla tour packages";i:3;s:218:"Book Himachal Tour With 2 Adults 1 Kid - 5 Nights / 6 Days tour packages from Tanish Himachal Tours - Get attractive 5 Nights / 6 Days Hill Station  tour packages for  Chandigarh City, Kufri, Manali, Manikaran, Shimla.";i:4;s:804:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Chandigarh City, Kufri, Manali, Manikaran, Shimla"        
		                 },
		      "description": "Meal plan : Lunch 
NON VEG MEAL
Cabs : Non-AC 
Airfare 
Others : Other Exclusions (Car at disposal 
All kind of personal expenses such as tips, laundry, telephone bills and beverages. 
It also does not include any meals unless and otherwise specifically mentioned.. 
Optional, suggested or unspecified activities. 
Camera fee (still or movie)",
		      "name": "Himachal Tour With 2 Adults 1 Kid",
		      "telephone": "+91-9736035555"
		    }
		    </script>
			";i:5;N;}