a:6:{i:0;s:11779:"				<div class="h1"><h1>Delhi - Shimla - Manali - Chandigarh Tour Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.avashshergilltravel.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.avashshergilltravel.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delhi - Shimla - Manali - Chandigarh Tour Package</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, New Delhi, Manali, Shimla</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.avashshergilltravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi - Shimla - Manali - Chandigarh Tour Package - 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="35141"/>
						</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_12/357911/71755.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/357911/71755.jpg"  width="150" height="150"    alt="Delhi - Shimla - Manali - Chandigarh Tour Package" title="Delhi - Shimla - Manali - Chandigarh Tour Package" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Air,Train Fare .<br />
Guide and Entry fee during sight seeing .Boating and Horse Ride ,etc.Portages,Laundry,Food,Tips. Liquor exp.A.C. supplement charges for vehicle Rs.3300- .<br />
4.95% Govt.Service Tax.<br />
Any other item not specified in cost includes.<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> Arrive Shimla
								</p>
								<p class="aj">Arrive Delhi Airport / Railway Station and transfer to the vehicle and proceed to Shimla (380 kms. /11 hrs). Reach Shimla by evening and check into hotel.<br />
Explore Shimla<br />
Shimla, India<br />
Shimla is one of the most popular and another top honeymoon destinations in India. The moment you enter, you'll be greeted with salubrious climate, and more<br />
Top things to do<br />
Restaurants<br />
Hotels<br />
Shopping<br />
Travel Tips</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> Sightseeing Tour Shimla
								</p>
								<p class="aj">Kufri Zoo<br />
Zoo<br />
Kufri Zoo hosts rare Antelopes, Felines and Birds including Himalayan Monal, the state bird of Himachal Pradesh.<br />
Maximum Duration of Visit: 3:0 hrs<br />
<br />
The Ridge and Mall Road<br />
Place to Visit<br />
The Ridge and Mall Road are packed with restaurants and shops. The Mall road is located a level below the ridge.The Ridge road is a large open space, located in the heart of Shimla. The Ridge road <br />
Maximum Duration of Visit: 3:0 hrs</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> Tour From Shimla To Manali
								</p>
								<p class="aj">After fresh-up, proceed to Manali ( 260 kms / 9 hrs) pass by Beas river, Sutlej River, Kullu valley. Visit Shawl factory at Kullu. Kullu Valley is surrounded by Sivalik Ranges of Himalayas is famous for Apple Trees. Reach Manali in the evening.<br />
Explore Manali<br />
Manali, India<br />
Manali Located in the state of Himachal Pradesh, Manali is an ancient town surrounded by snow capped peaks and close in proximity to the snowline. It has a ... more<br />
Top things to do<br />
Restaurants<br />
Hotels<br />
Shopping<br />
Travel Tips<br />
River Beas<br />
Lake/River/Water body<br />
The Beas River is a river in the northern part of India. The river rises in the Himalayas in central Himachal Pradesh, India, and flows for some 470 km (290 miles) to the Sutlej River in the Indian ...<br />
Maximum Duration of Visit: 3:0 hrs<br />
River rafting in Sutlej river<br />
Activity Place<br />
The swift flowing rivers of Shimla provide the ideal condition for the river rafting adventure sport. The Sutlej river near Shimla offers exciting river rafting opportunities. River rafting is done on...<br />
Maximum Duration of Visit: 3:0 hrs</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
								</p>
								<p class="aj">Enjoy spectacular drive towards Rohtang Snow point at an altitude of 3,980 mts and enjoy in the snow. Evening return to Manali<br />
Rohtang Pass<br />
Things to do<br />
Average place. If you for real Himalaya Experience Try ladakh. You may drive to Leh/Ladakh by road from Manali or take the direct flight from Delhi.(TravelInStyle)<br />
Maximum Duration of Visit: 3:0 hrs</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 To Chandigarh
								</p>
								<p class="aj">Early Morning proceed to Chandigarh (285 kms /9 hrs) The most important City of independent in India. Arrive Chandigarh in the evening. Enroute visit Pinjore Gardens, Rock Gardens, Rose Gardens and take a boat ride in Sukhana Lake.<br />
Explore Chandigarh<br />
Chandigarh, Pakistan<br />
Chandigarh is a city in Northern India that serves as the capital of the states of Punjab and Haryana.Chandigarh has various visitor attractions including .more<br />
Top things to do<br />
Restaurants<br />
Hotels<br />
Shopping<br />
Travel Tips<br />
<br />
Pinjore Gardens<br />
Place to Visit<br />
Pinjore Gardens - Pinjore Gardens, also called Yadavindra Gardens, are 20 km (12 mi) from Chandigarh and 15 km (9 mi) from Panchkula, on the Chandigarh Shimla road. Taxis and buses ply regularly .<br />
Maximum Duration of Visit: 2:0 hrs<br />
Rock Garden<br />
Place to Visit<br />
Rock Garden [11] designed by Nek Chand. One day 36 years ago, Nek Chand, a humble transport official, began to clear a little patch of jungle to make himself a small garden area. He set stones around .<br />
Rose Garden<br />
Place to Visit<br />
Zakir Hussain Rose Garden, is a botanical garden located in Chandigarh, India and spread over 30 acres (120,000 m2) of land, with 50,000 rose-bushes of 1600 different species. Named after India's <br />
Maximum Duration of Visit: 2:0 hrs<br />
Bird watching, boating, yachting, rowing, picnics, and water...<br />
Things to do<br />
Bird watching, boating, yachting, rowing, picnics, and water skiing are some of the outdoor activities in Chandigarh that you can enjoy at the Sukhna Lake that is an artificial water body created by .<br />
Maximum Duration of Visit: 3:0 hrs</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> Return To New Delhi
								</p>
								<p class="aj">Proceed to Delhi ( 265 kms / 5 hrs ). Enroute visit Kurukshetra (optional). Arrive Delhi in the evening and board the flight / train for onward journey.</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>Sightseeing</li>
																		<li>Transport</li>
																		<li>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Air,Train Fare .</li><li>
Guide and Entry fee during sight seeing .Boating and Horse Ride ,etc.Portages,Laundry,Food,Tips. Liquor exp.A.C. supplement charges for vehicle Rs.3300- .</li><li>
4.95% Govt.Service Tax.</li><li>
Any other item not specified in cost includes.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount * Airfare/Transport fare to be paid full at one time in advance.~^#^~* 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. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.avashshergilltravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi - Shimla - Manali - Chandigarh Tour Package - 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="35141"/>
						</form>
						</div>
						
						";i:1;s:88:"Book Delhi - Shimla - Manali - Chandigarh Tour Package - 5 Nights / 6 Days Tour Packages";i:2;s:168:"book delhi - shimla - manali - chandigarh tour package - 5 nights / 6 days tour packages, valley tour packages, chandigarh city, new delhi, manali, shimla tour packages";i:3;s:206:"Avash Shergill Travel offers Delhi - Shimla - Manali - Chandigarh Tour Package - 5 Nights / 6 Days tour package, budget Valley tour packages for Chandigarh City, New Delhi, Manali, Shimla at exciting price.";i:4;s:707:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Chandigarh City, New Delhi, Manali, Shimla"        
		                 },
		      "description": "Air,Train Fare .
Guide and Entry fee during sight seeing .Boating and Horse Ride ,etc.Portages,Laundry,Food,Tips. Liquor exp.A.C. supplement charges for vehicle Rs.3300- .
4.95% Govt.Service Tax.
Any other item not specified in cost includes.",
		      "name": "Delhi - Shimla - Manali - Chandigarh Tour Package",
		      "telephone": "91-8699559635"
		    }
		    </script>
			";i:5;N;}